这是一个很奇怪的问题。因为原来服务器经常高峰时期 502,然后看 top 是因为 mysql 占了很高的 CPU 资源,然后想着把数据库弄成远程的这样负载分离吧。
现在数据库弄到远程了,高峰期原来的服务器还是很高,从 top 看现在变成是有很多 php-fpm 进程,其中一个 php-fpm 占 cpu 比较高了。
奇怪的是远程数据库服务器,几乎一点负载都没有,这是什么情况?
1
hand515 2018-06-25 20:19:49 +08:00
磁盘 IO 有检查过没
|
3
R18 2018-06-25 20:27:37 +08:00 via Android
切回本地看看到底是哪条 SQL 占用长?测测本地连接与远程连接处理速率
|
4
hand515 2018-06-25 20:27:39 +08:00
先试试 iostat 看 avg-cpu
|
5
feverzsj 2018-06-25 20:30:08 +08:00
看 I/O wait percentage
|
6
likuku 2018-06-25 20:48:12 +08:00
原先是 php-fpm 和 mysql 都在同一台机? mysql 新旧机软硬件配置一样?
|
7
doufenger OP @hand515
似乎 IO 没问题,空闲率 58% avg-cpu: %user %nice %system %iowait %steal %idle 35.89 0.00 5.81 0.00 0.00 58.30 Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn sda 48.94 1486.61 1291.70 441954642 384010770 sdb 0.21 0.01 0.00 3112 0 dm-0 177.47 1486.49 1290.39 441919154 383621376 dm-1 0.18 0.10 1.31 28968 389336 dm-2 0.00 0.00 0.00 760 |
8
thread2 2018-06-25 20:53:21 +08:00 via Android
innotop
|
10
a7a2 2018-06-25 22:52:47 +08:00
开启 php status 监控 看看 php 被请求次数 看是否被攻击
|
11
likuku 2018-06-25 22:53:35 +08:00 2
php-fpm 和 mysql 混在一台... 繁忙时,两者都在抢同一块资源,那必然是不行,
502 多,web 和 mysql 很可能那时都资源耗尽,既然已经分开了,新 mysql 这块,看来已经没啥问题, php-fpm 负载高?最好开下 php 的 slow log,之后分析下日志,看看是哪些 php 慢。 再者,确认下你 php 足够新 (php7 or 更老)? php 的 opcache 加速有没有开? 遇到过 php 太老,且没有开任何加速功能,让 php-fpm 处理请求很慢, 被稍微密集访问时,php-fpm 就忙不过来,持续高 CPU 占用。 根据 slow log 针对性重写优化比较慢的一些 php 程序,也是个好办法。 |
12
doufenger OP @likuku 安装 opcache 在最后一步出现这个情况了 求助大佬
[root@localhost zendopcache-7.0.5]# make && make install /bin/sh /root/zendopcache-7.0.5/libtool --mode=compile cc -I. -I/root/zendopcache-7.0.5 -DPHP_ATOM_INC -I/root/zendopcache-7.0.5/include -I/root/zendopcache-7.0.5/main -I/root/zendopcache-7.0.5 -I/www/wdlinux/phps/56/include/php -I/www/wdlinux/phps/56/include/php/main -I/www/wdlinux/phps/56/include/php/TSRM -I/www/wdlinux/phps/56/include/php/Zend -I/www/wdlinux/phps/56/include/php/ext -I/www/wdlinux/phps/56/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /root/zendopcache-7.0.5/ZendAccelerator.c -o ZendAccelerator.lo cc -I. -I/root/zendopcache-7.0.5 -DPHP_ATOM_INC -I/root/zendopcache-7.0.5/include -I/root/zendopcache-7.0.5/main -I/root/zendopcache-7.0.5 -I/www/wdlinux/phps/56/include/php -I/www/wdlinux/phps/56/include/php/main -I/www/wdlinux/phps/56/include/php/TSRM -I/www/wdlinux/phps/56/include/php/Zend -I/www/wdlinux/phps/56/include/php/ext -I/www/wdlinux/phps/56/include/php/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /root/zendopcache-7.0.5/ZendAccelerator.c -fPIC -DPIC -o .libs/ZendAccelerator.o /root/zendopcache-7.0.5/ZendAccelerator.c:39:35: error: TSRM/tsrm_virtual_cwd.h: No such file or directory /root/zendopcache-7.0.5/ZendAccelerator.c: In function ‘ accel_fast_zval_ptr_dtor ’: /root/zendopcache-7.0.5/ZendAccelerator.c:2176: error: ‘ IS_CONSTANT_ARRAY ’ undeclared (first use in this function) /root/zendopcache-7.0.5/ZendAccelerator.c:2176: error: (Each undeclared identifier is reported only once /root/zendopcache-7.0.5/ZendAccelerator.c:2176: error: for each function it appears in.) make: *** [ZendAccelerator.lo] Error 1 |
13
doufenger OP 我的是 PHP 5.6 的
|
14
doufenger OP 开了 Gzip On, Memcache On.
24 核的 CPU 平时 200-300 在线的时候负载才 二十多, 晚上到 400 了就负载 200-250 多。。频繁 502 |
15
likuku 2018-06-26 10:58:11 +08:00
@doufenger php 5.6 已经内建了 opcache 只需要开启即可:
使用 OpCache 提升 PHP 5.5+ 程序性能 | Laravel China 社区 - 高品质的 Laravel 开发者社区 : https://laravel-china.org/topics/301/using-opcache-to-enhance-the-performance-of-the-php-55-program [SOLVED] PHP 5.6 with opcache : https://www.linuxquestions.org/questions/linux-software-2/php-5-6-with-opcache-4175588254/ 不行的话,再查看 phpinfo() 确保 php 本身编译时已开启 --enable-opcache # 善用搜索引擎,我只分别用了 php opcache tsrm_virtual_cwd.h error 和 opcache php 5.6 就 google 出了足够的资料 |
16
likuku 2018-06-26 11:09:32 +08:00
差点忘记了,当前你的 php 5.6 没安装 /启用 任何加速器么? (eaccelerator, APC, opcache)
|
18
likuku 2018-06-27 10:06:04 +08:00
@doufenger memcache 不算,它最多只能算优化加速 db 的。
那么,看来,用于加速 php 本身的加速器你统统都没装!当下,那就 opcache 吧,必经已经被吸收进 php 本身了, 兼容性,可靠性,和维护性都有保障了。这类东西都是拿内存换速度的,默认记得都是给它 16M 内存的,一般也够了。 开启后运行几天先看看,若服务器资源充足,可以适当多给它点内存。 很可能就是这个状况 “遇到过 php 太老,且没有开任何加速功能,让 php-fpm 处理请求很慢, 被稍微密集访问时,php-fpm 就忙不过来,持续高 CPU 占用。” |