в последнее время веб-сайт, размещенный на VPS, временами становится очень труднодоступным, и я пытаюсь понять, почему. Я заметил следующие вещи:
Учитывая эти наблюдения, что я должен попытаться проверить / отладить, чтобы найти решение?
Спасибо!
Это могло быть вызвано множеством разных проблем. По какой-то причине может показаться, что ваш процесс ожидает чего-то, что требует времени для завершения. Сомнительно, что это IO, поскольку вы увидите более высокие средние нагрузки. Вопрос в том, какой. Вот несколько вещей, которые можно попробовать, если VPS - это Linux:
iostat из пакета sysstat диагностирует, является ли это проблемой ввода-вывода
Запустите strace -fp of process, выполняя медленный запрос. Ctrl-c strace, когда закончите. Наблюдайте за системными вызовами во время медленного запроса. Скорее всего, он остановится на одном, а затем продолжится. strace сбрасывает тонны информации, поэтому вы можете использовать -o. Он также может сбрасывать много информации из других подключений, если они параллельны и обрабатываются одним и тем же процессом в другом потоке или тому подобное.
Увеличьте ведение журнала в приложении / базе данных и попытайтесь сузить проблему
Я предполагаю, что вы выполняете обратный поиск источника соединений либо в вашем коде, либо в журнале. Если это будет сделано синхронно, каждое соединение будет ждать ответа от DNS-сервера и сократит время ответа.
Другая возможность заключается в том, что вы используете mysql и myisam в качестве типа хранилища с большим количеством одновременных операций записи. Myisam выполняет блокировку на уровне таблицы (или, по крайней мере, раньше). Вся таблица будет заблокирована для записи до тех пор, пока запись не будет завершена с ее запросом / записью. Каждое соединение должно будет по очереди ждать записи в базу данных.