聚合全网技术文章,根据你的阅读喜好进行个性推荐
开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>
抛开那些你改变不了的条件不谈(比如增加机器配置,数据库独立部署等),这里给几个建议:
1、检查下php是否开启了opcache缓存
2、strace工具调试一下看瓶颈在哪里,比如使用某些框架,需要动态的打开文件,框架是否支持优化的方案,到框架的官网上去看下,一般都有,另外框架一般默认加载了大而全的东西,检查下如果不是需要的是否可不加载。
3、尝试去优化下业务吧,能用memcached替换mysql的业务,用memcached替换吧。
你对2核4G的性能要求太高了,不仅跑php还跑mysql
不懂装懂
mysql 死锁了都不知道
看下是不是mysql链接数少了。处理不过来了
比如4个PHP-FPM进程就能跑满4个核心的CPU,
那么你开40个PHP-FPM进程也没有任何意义,
只会占用更多的内存,造成更多的CPU上下文切换,性能反而更差.
对于一些存在阻塞的IO密集的操作,比如上传操作,可以设立单独的upload进程池,利用PHP-FPM提供的池的隔离性,分离计算密集和I/O密集操作,可以减少阻塞对整个PHP应用的影响.
[www]
listen = 127.0.0.1:9000
pm = static
pm.max_children = 4
[upload]
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 4
具体看: PHP FastCGI进程管理器PHP-FPM的架构
抛开那些你改变不了的条件不谈(比如增加机器配置,数据库独立部署等),这里给几个建议:
1、检查下php是否开启了opcache缓存
2、strace工具调试一下看瓶颈在哪里,比如使用某些框架,需要动态的打开文件,框架是否支持优化的方案,到框架的官网上去看下,一般都有,另外框架一般默认加载了大而全的东西,检查下如果不是需要的是否可不加载。
3、尝试去优化下业务吧,能用memcached替换mysql的业务,用memcached替换吧。
你对2核4G的性能要求太高了,不仅跑php还跑mysql
引用来自“eechen”的评论
2个CPU核心开超过50多个PHP-FPM工作进程,CPU负载能不高吗?比如4个PHP-FPM进程就能跑满4个核心的CPU,
那么你开40个PHP-FPM进程也没有任何意义,
只会占用更多的内存,造成更多的CPU上下文切换,性能反而更差.
对于一些存在阻塞的IO密集的操作,比如上传操作,可以设立单独的upload进程池,利用PHP-FPM提供的池的隔离性,分离计算密集和I/O密集操作,可以减少阻塞对整个PHP应用的影响.
[www]
listen = 127.0.0.1:9000
pm = static
pm.max_children = 4
[upload]
listen = 127.0.0.1:9001
pm = dynamic
pm.max_children = 8
pm.start_servers = 4
pm.min_spare_servers = 4
pm.max_spare_servers = 4
具体看: PHP FastCGI进程管理器PHP-FPM的架构
不懂装懂
mysql 死锁了都不知道
看下是不是mysql链接数少了。处理不过来了