刚刚不经意间查看关于php加速方面的消息,看到了一句话“lamp结构的瓶颈在于M”,感觉是真知灼见,当然这是在理想状态下的情况。对于实际情况下的生产环境来说,需要解决的问题是多种多样的,l-a-m-p在不同阶段需要优化的点是不同的,虽然通过努力最终的瓶颈在于M,但是期间的各种努力也是不容忽视的。下面我就意识流的总结一下,在网站生产环境遇到的各种问题。
以下是之前遇到问题的各种汇总:
1、php内的sql代码性能存在问题
这个存在于两方面,一个是sql本身优化不够,另外一个方面是随着数据量的增加,某些性能问题会逐渐暴露。
2、apache处理模式造成的内存消耗
由于apache是以进程的形式,同步阻塞式的处理http请求,so,当网页本身加载元素过多的话,会造成大量的
http进程并发,消耗服务器大量的内存,导致访问缓慢或者异常。
解决办法很是简单,主要有一下几个方面
a、动态页面转成静态页面。
b、转成lnamp的模式,图片等静态资源由nginx进行处理,减少http进程数量
3、CDN服务的使用
这个并不是性能问题,而是为了解决用户访问的页面加载速度问题,以及不同网络之间的延迟问题。
具体使用效果是非常不错的,会大大的改善各地用户的访问速度,土豪公司可以自建CDN,中小公司
选择第三方服务也是不错的选择。
4、缓存的使用
这个有两个方面的缓存,其中主要的缓存是数据也就是动态方面的缓存
使用的软件主要有redis以及memcache(开源用的爽爽哒)
这两个软件都是针对php与mysql之间的请求进行缓存,减少与mysql的直接交互,提高访问速度。
5、apache的负载均衡,mysql的读写分离
即便增加了CDN、缓存,优化了apache的页面,但是高并发的问题依然会随着用户量的增加而慢慢出现,那么这个时候
就要发大招了,扩!容!硬!件!。永远都好使的大招,用完即生效。我们现在主要使用的是nginx+apache的负载均衡方式。
而mysql的读写分离也so easy,使用主从复制即可。对于及时性要就不是太高的网页访问,问题不大。
6、奇葩问题粗现了!!!
Then,该优化的俺们都优化了,前辈的经验也是各种借鉴,最后俺们发现页面访问还是慢得想让用户注销。问题到底在哪?
又经过了艰苦卓绝的调查与研究,最后发现,上一个离职的哥们开放的一个权限系统(所有网页加载都会用),没有关闭
debug,我去!我一口老血喷在了显示器上啊!苍天啊,我曾经一度怀疑自己是不是在做无用功啊!
这里不是挑起运维与研发的阶级矛盾,而是总结经验教训,以后不在走弯路!
先到这吧!以后有了经验再补充!