有一个令我疯狂的问题。 一天后,我试图解决我的VPS CPU使用问题,CPU负载已经从60%增长到150%,我不知道是什么原因造成的问题。 请帮帮我。
我已经在Linode 1024上安装了一个mediawiki的副本。该wiki正在Niginx + PHP-fpm + MySql上运行。 这个wiki没有太多的stream量,每天只有4000个请求,主要来自Google和Bing机器人。 之前一直在使用CPU的60%左右(Linode的400%)。 我认为这有点高,所以前两天,我试图解决这个问题(不知道在等什么)。 我什么都没做,只是在wiki的configuration文件中增加了一个新的空行,这会改变configuration文件的修改时间,然后所有的caching页面文件都将被设置为无效。 之前我曾经这样做过,这会导致CPU使用率过高,但通常只需要几个小时就可以恢复正常。 目前还没有,我的CPU使用率在两天以上的时间里已经达到了150%左右。
这是使用大多数CPU保证的php-fpm。 使用三个核心的100%并不罕见。 我以前没见过。 Linode上还有其他的网站,但它应该是wiki。 因为如果我离线维基,CPU使用率将很快回落到40%左右。
那天我也复制了php-fpm.conf,并打开它,但没有改变它。
我不知道我做错了什么。 我在这里寻求帮助,以免自己被疯狂! 这是php-fpm。 有没有办法找出它在做什么? 我的意思是像哪些脚本是相关的,哪些function代码正在运行?
最佳:
top - 06:34:33 up 10 days, 4:23, 2 users, load average: 1.10, 1.24, 1.37 Tasks: 76 total, 4 running, 72 sleeping, 0 stopped, 0 zombie Cpu(s): 61.1%us, 3.1%sy, 0.0%ni, 32.8%id, 2.9%wa, 0.0%hi, 0.0%si, 0.1%st Mem: 1028684k total, 945192k used, 83492k free, 89580k buffers Swap: 524284k total, 18084k used, 506200k free, 530380k cached PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 26721 www-data 20 0 208m 54m 34m R 99 5.4 0:09.07 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf 26592 www-data 20 0 207m 45m 26m R 91 4.5 0:12.77 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf 26706 www-data 20 0 196m 43m 34m S 47 4.3 0:15.19 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf 26583 www-data 20 0 197m 45m 35m S 33 4.5 0:19.08 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf 26787 www-data 20 0 206m 36m 18m R 25 3.7 0:00.41 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf 26661 www-data 20 0 207m 46m 26m S 13 4.6 0:19.87 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf 1971 mysql 20 0 155m 57m 3952 S 8 5.7 383:57.81 /usr/sbin/mysqld 242 root 20 0 0 0 0 S 1 0.0 0:51.36 [kworker/3:1] 5711 root 20 0 139m 95m 580 S 1 9.5 0:41.30 /usr/local/bin/memcached -d -u root -m 128 -p 11211 19463 root 20 0 190m 3984 1284 S 1 0.4 0:02.66 /opt/php5/sbin/php-fpm --fpm-config /opt/php5/etc/php-fpm.conf 29100 www-data 20 0 10928 5540 820 S 1 0.5 4:49.05 nginx: worker process
vmstat 30
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu---- rb swpd free buff cache si so bi bo in cs us sy id wa 0 0 16912 81456 90784 554172 0 0 4 6 3 2 11 1 87 1 0 0 16912 78036 91000 555356 0 0 38 34 1397 375 12 1 87 0 4 0 16912 31776 91528 557508 0 0 78 42 3197 487 45 1 52 1 1 0 16912 83356 91768 558576 0 0 35 56 2608 449 32 1 67 1 1 0 16912 81548 92040 559720 0 0 41 31 1243 432 8 1 91 1 2 0 16912 53056 92332 562744 0 0 105 33 2013 581 17 1 81 1 2 0 16912 73236 92552 564844 0 0 68 36 1968 615 16 1 82 1 0 0 16912 91612 92904 566676 0 0 69 35 1845 692 13 1 85 1 1 0 16912 71248 93180 568428 0 0 58 33 1952 604 15 1 82 1 1 0 16868 55952 93516 572660 1 0 144 42 1801 637 12 1 86 1 2 0 16868 48324 94416 577844 0 0 189 66 2058 702 17 1 80 2 1 0 16928 58644 94592 578184 0 2 160 49 2578 723 25 1 70 3 5 0 16928 22600 94980 580568 0 0 89 32 1496 361 13 0 85 1 0 0 16988 49256 94500 576396 0 2 41 37 1601 426 14 1 85 0 5 0 18084 24336 86032 502748 0 37 83 68 2989 562 42 1 56 0 1 0 18084 123604 86376 506996 0 0 118 41 2201 573 22 1 76 1 2 0 18084 126984 86752 508876 0 0 64 53 1620 490 13 1 85 1 2 0 18084 103104 87148 510768 0 0 71 37 2757 602 33 1 64 1
您可以从减lessGoogle和Bing请求开始…您是否设置了robots.txt? 排除ScriptPath爬行,以便只有规范页面URL被索引,但没有任何带有参数的URL到api.php或index.php。 如果需要也设置爬行延迟。
许多MediaWiki网站由于小的configuration错误而被search引擎放缓。
尝试使用strace -p 26721来查看进程在做什么。 要查看哪个文件句柄是使用lsof -p 26721 。
CPU正在以%用户状态使用,试图find更多关于消耗顶级输出中大部分资源的PID的信息。 就像上次一样,运行strace -ffttTo /tmp/strace.out -p就可以知道它在哪里被卡住了,或者连续的系统调用需要多less时间。 如果有延迟,你可以从那里找出它。
而且,lsof,fuser是可行的select。