Назад | Перейти на главную страницу

Внезапное увеличение средней нагрузки при том же количестве пользователей и при отсутствии изменений

Мой веб-сайт до вчерашнего дня работал нормально со средней нагрузкой ниже 1. Внезапно вчера он стал плохо себя вести. Я получал среднюю нагрузку до 50.

Я ничего не менял ни на сервере, ни на веб-сайте, и количество пользователей, использующих веб-сайт, осталось таким же, как и в предыдущие дни. Вот скриншот верхней команды:

Я даже не знаю, с чего начать, чтобы увидеть, что идет не так. Виртуальная память процессов php кажется мне очень большой, но, опять же, странно, что в предыдущие дни все было в порядке. Или, возможно, они не были, и я совершенно не знал об этом.

В чем может быть причина проблемы и как мне ее устранить?

Скринкарт, кажется, показывает несколько php процессов, что предполагает, что вы запускаете php под apache2 как cgi-script (а не модуль php-script) или что у вас есть автономные процессы, которые выполняются как командная строка php или интерпретатор php.

Связанный CPU mysqld предполагает, что все они делают что-то, связанное с 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. Это был просто быстрый пример из моей головы)