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