我的网站运行良好,直到昨天平均负载低于 1。突然,昨天它开始表现不佳。我的平均负载高达 50。
我没有对服务器和网站做任何改动,网站的用户数量和以前一样。以下是 top 命令的截图:
我甚至不知道从哪里开始查看出了什么问题。php 进程的虚拟内存似乎很高,但奇怪的是,前几天它们似乎没问题。或者也许它们不是,而我完全没有意识到这一点。
问题的原因可能是什么?我该如何进行故障排除?
答案1
屏幕截图似乎显示了许多php
进程,这表明您正在 apache2 下将 php 作为 cgi 脚本(而不是 php 脚本模块)运行,或者您有作为 php 命令行或 php 解释器运行的独立进程。
相关的 mysqld CPU 表明它们都在执行与 MySQL 相关的操作(或者可能是巧合)
这些 php 不是以 apache 用户身份运行的,这表明您需要提供更多有关这些进程的信息,以及为什么它们可能突然使用更多资源。
如果您想获得有关 php 进程的更多信息,我使用类似这样的单行代码来转储一些 pid 信息...
首先从顶部输出中选择一个 pid 号码,例如从输出中选择 8371,在这个例子中,我只是显示了我作为测试进行的睡眠 10000 的一些值......
# pid=17837; { cat /proc/${pid}/{cmdline,environ} && ls -l /proc/${pid}/{cwd,exe}; } | tr '\0' '\n';
sleep
10000
HOSTNAME=workstations01.config
TERM=xterm
SHELL=/bin/bash
HISTSIZE=1000
SSH_CLIENT=123.123.123.123 55069 22
SSH_TTY=/dev/pts/2
USER=userXXX
LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35:
SSH_AUTH_SOCK=/tmp/ssh-lGNBN31178/agent.31178
MAIL=/var/spool/mail/userXXX
PATH=/usr/kerberos/bin:/opt/admin/bin:/usr/local/bin:/bin:/usr/bin:/opt/mx/bin
INPUTRC=/etc/inputrc
PWD=/home/userXXX
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/userXXX
LOGNAME=userXXX
SSH_CONNECTION=123.123.123.123 22
LESSOPEN=|/usr/bin/lesspipe.sh %s
G_BROKEN_FILENAMES=1
_=/bin/sleep
lrwxrwxrwx 1 userXXX users 0 May 29 13:11 /proc/17837/cwd -> /home/userXXX
lrwxrwxrwx 1 userXXX users 0 May 29 13:12 /proc/17837/exe -> /bin/sleep
(显然有很多方法可以查看 php 调用的内容。这只是我快速想到的一个示例)