最近一段时间公司服务器的压力上升明显,由原来的2核4G升到4核8G仍然不能解决cup压力过大的问题。php进程管理中,进程数会突然升高,引发cpu所有进程占用爆满。主要原因还是百度蜘蛛访问太猛。
症状显示:
- 查看top命令,盯一会cpu的占用率。
正常时:
突然增加时:
- 很明显这里的每一个php-fpm进程的cpu占用率都成倍的增加了。
- 查看php进程管理状态
正常时如上图,而如果cpu高的时候,这里的进程数量会达到上限值。
爬坑经历不说了,直接上办法
解决办法:
- 主要的:增加php 的OPcache扩展。
OPcache 通过将 PHP 脚本预编译的字节码存储到共享内存中来提升 PHP 的性能, 存储预编译字节码的好处就是 省去了每次加载和解析 PHP 脚本的开销。
说白了,就是缓存的方式加速。 - 次要的:方便的话加上缓存 memcache,memcached,redis
当然这个就比较麻烦了,需要代码上变动了。
** 注: 加上opcache后,如果代码变动,要有60少的时间才会生效。