Загрузка сервера минимальна, но сайт плохо реагирует - PullRequest
0 голосов
/ 31 мая 2018

У меня есть VPS на Хетцнер.Сервер находится в Германии.

Он имеет 256 ГБ ОЗУ, 6 ЦПУ (12 потоков).

У меня есть файл, который со вчерашнего дня запрашивается около 30 раз в секунду.Файл имеет 2 выбора, 2 обновления, 2 вставки запросов, поэтому я предположил (не уверен, как это работает) с этого файлового сервера около 180 запросов в секунду.Поэтому сразу после запуска этих запросов все веб-сайты на сервере начали плохо загружаться.Я заставил этот файл выполнить только один запрос выбора и затем умереть.Это не помогло.В WHM нагрузка не превышает 0,02.

Я проверил журналы ошибок, и нет max_user_connection или какой-либо ошибки там.

Я включил медленный журнал запросов и проверил файл журнала.ничего нет (я проверял это с помощью select sleep (10), и этот запрос был зарегистрирован).

Это статистика посещений, пожалуйста, обратите внимание на 30 мая:

enter image description here

Статистика пропускной способности за последние 24 часа:

enter image description here

В ssl_log (diff) много подобных ошибокIP-адреса, конечно):

188.121.206.150 - - [30 / May / 2018: 19: 50: 03 +0200] "-" 408 - "-" "-"

I 'Я много искал в Интернете и не мог найти никакого решения.Может кто-нибудь хотя бы сказать, что я должен контролировать или где.У меня есть полный доступ ко всему, что возможно внутри сервера.Мы ценим любую помощькоторые запрашиваются.Возьмем одно изображение, например: https://banners.analyticson.com/img/suy8G1S6RU.jpg

Для загрузки требуется слишком много времени.Как я заметил, этот поддомен имеет некоторые проблемы.Сценарий, о котором я упоминал ранее (с 6 запросами), просто пытается получить один из этих баннеров для пользователя, поэтому в результате этого сценария возвращается один баннер от banner.analyticson.com.

UPDATE2

Я проверил свой сценарий, все в порядке.Это займет не более 1 секунды.Я также проверил команду Top и есть результат.Я не уверен, что значение $ MEM в порядке.

enter image description here

1 Ответ

0 голосов
/ 31 мая 2018

Вам придется сузить проблему ...

Существует множество потенциальных проблем.

Первое, что нужно устранить, - это производительность вашего нового сценария в процессе разработки.Ноутбук - я предполагаю, что вы используете PHP, поэтому используйте инструменты профилирования , чтобы понять, что происходит.Если это запрос к базе данных, вы увидите, какой из них, посмотрев на профилировщик.

Если ваш PHP-скрипт и запросы к базе данных в порядке, то на что нужно обратить внимание: звучит так, как будто вы достигли некоторого узкого местаресурс на вашей инфраструктуре.В этих случаях сценарии, которые работают нормально, как один запрос, начинают очередь для ресурса узкого места, и каждый новый запрос добавляется в очередь до тех пор, пока весь сервер не начнет сканировать.Это может быть немного загадкой - начните с top и продолжайте копать.

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

Если это не так просто, как память, процессор и т. Д., Выв более эзотерические вопросы.Возможно, вам придется увеличить нагрузочное тестирование, чтобы вы могли экспериментировать, не затрагивая работающий сайт - обычно я делаю это на машине, максимально похожей на работающую, используя Apache JMeter для генерации нагрузки и нахожу«точка перегиба».Как правило, вы видите, что время отклика линейно увеличивается с количеством одновременных запросов, пока вы не столкнетесь с ресурсом узкого места, после чего время отклика быстро возрастет.В качестве простого примера, если у вас есть 10 доступных подключений к базе данных, время отклика должно линейно увеличиваться до 10 одновременных подключений, а затем значительно увеличиться с 11 до.

Знание точки перегиба и возможность воссозданияэто позволяет использовать PHP профилирующие инструменты под нагрузкой.Это много работы.

ОБНОВЛЕНИЕ

Вы используете php-cgi;это легко самый неэффективный способ запуска PHP-скриптов.Ваш сервер почти не потеет - процессор и память в основном простаивают. Вот сравнение того, как запустить PHP;рассмотрите возможность изменения на mod_php.

...