Жесткая нагрузка на сервер

Главные вкладки

Аватар пользователя frgs frgs 18 августа 2009 в 23:34

здравствуйте
сегодня хостер (супер джино) отрубил мой акканут, сославшись на загрузку процессора (лог в аттаче)
посещаемость сайта оч низкая - 30 чел в сутки, как такая нагрузка возможна! 45%
кеш включен, все вроде бы ок. Модули тоже почти все реккомендуемые.

ВложениеРазмер
Иконка простого текстового файла log.txt4.59 КБ

Комментарии

Аватар пользователя Resistant Resistant 19 августа 2009 в 1:32

Поищите отзывы о этом недохостере - очень много встречал жалоб с похожими проблемами: то все работает отлично, и нагрузка в порядке, потом бац - мол ваш сайт(ы) сильно грузят сервер... Вобщем imho неадекваты там какие то!

Аватар пользователя Azerot Azerot 19 августа 2009 в 8:14

Мне вот всегда было интересно (как человеку, работающему в хостинговой компании) каким образом сам хостер на ВИРТУАЛЬНОМ хостиге может определить сколько процентов процессора жрёт тот или иной сайт. По моему глубокому убеждению - это попросту невозможно.

Тот лог, что приведён в прицепе мне смешон. Во-первых, потому что я не вижу ни одного процесса, который бы занимал больше 25% даже согласно их лога. Во-вторых, потому что это МГНОВЕННЫЙ снимок состояния системы, а не скажем мониторинг, который показывает, что данный % CPU расходовался скажем в течение хотя бы 5 минут. В третьих, из этого лога мы не видим сколько %CPU занимают остальные клиенты, вполне возможно, что, например другие клиенты нагрузили дисковыми операциями систему и теперь drupal в состоянии wait ожидания диска соответственно попал под раздачу.

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

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 19 августа 2009 в 15:18

"Azerot" wrote:
сам хостер на ВИРТУАЛЬНОМ хостиге

"Azerot" wrote:
моему глубокому убеждению

есть время
1. выполнения скриптов
2. нагрузка на БД
И в том и том пункте минимальный мониторинг скриптов возможен.
просто надо писать расширения пхп для этих случаев.
Если ваши убеждения исключают что это возможно... Smile

Аватар пользователя Azerot Azerot 19 августа 2009 в 17:28

1. Время выполнения скрипта ничего не говорит о том как он нагружает процессор. Например скрипт всего из одной строчки:
sleep(60);
будет выполняться 60 секунд. И что?
2. Нагрузка на БД говорите? А как вы её будете считать? Количество запросов в секунду? Но 10 (и более) легких запросов нагрузят БД меньше, чем один тяжёлый. Время выполнения запроса? Тоже пальцем в небо, потому что даже лёгкий запрос может занять существенное время если в момент запуска уже работает тяжёлый запрос или если например MySQL работает на диске, на котором есть другая дисковая активность.

Так что пока не вижу ничего, что противоречило бы моим убеждениям. Кстати ещё подумайте над тем, что мониторинг нагрузки на БД по тяжести может в итоге сравнится с дополнительным сайтом Smile

Аватар пользователя Ильич Рамирес Санчес Ильич Рамирес Санчес 19 августа 2009 в 20:38

"Azerot" wrote:
1. Время выполнения скрипта ничего не говорит о том как он нагружает процессор. Например скрипт всего из одной строчки:
sleep(60);
будет выполняться 60 секунд. И что?

это говорит о том что поток из пула будет занят и не задействован другими. а если таких коннектов будет полсотни? Smile
"Azerot" wrote:
2. Нагрузка на БД говорите? А как вы её будете считать? Количество запросов в секунду? Но 10 (и более) легких запросов нагрузят БД меньше, чем один тяжёлый.

мониторить время исполнения от расширений mysql? mysqli

все это решается. патчится. и смотрится. поверьте, все можно.

ну и да. может ыть оверселл на серваке. тогда время работы скрипта становится ооооочень растяжимым.

Аватар пользователя Azerot Azerot 19 августа 2009 в 20:55

Quote:
это говорит о том что поток из пула будет занят и не задействован другими. а если таких коннектов будет полсотни? :)

И что? Вам известно, например, что ОДИН FireFox открывает 8 одновременных коннектов к сайту и выкачивает параллельно страницу и картинки? Эти полсотни коннектов будут занимать как вы говорите пул, но не грузить процессор сервера. И кстати чтобы они не занимали есть nginx и есть ограничение числа одновременных коннектов. Но это уводит нас в сторону от вычисления того как конкретный сайт загружает сервер и в частности CPU Smile

Quote:
ну и да. может быть оверселл на серваке. тогда время работы скрипта становится ооооочень растяжимым.

В том-то и дело. Вы тоже мне поверьте, я не первый год хостингом занимаюсь и логи mysql читаю регулярно, а в них всё видно. Запрос, обрабатывающий 100 000 строк может пролететь менее чем за 5 сек., а через несколько минут маленький запрос на 5000 строк может выполняться уже секунд 20.

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

Аватар пользователя gor gor 19 августа 2009 в 22:33

и Всетаки можно кое что сделать чтоб понять какой юзер создает нагрузку.
В частности я решил это своим путем.
Все потоки апача работают от имени пользователя. Соотвественно если в atop (не путатьс TOP хотя они близки) сделать сортировку по юзеру и сумирование по CPU то можно увидеть кто на текуший момент сколько ресурсов потребляет. А для пущей уверности сделать частосу сумирования равной 5ти минутам.
Получим более менее обьективную информацию по загрузке CPU конкретным пользователем.

Аватар пользователя alexandr.poddubsky alexandr.poddubsky 20 августа 2009 в 5:08

"frgs" wrote:
ну вот как отключили аккаунт сразу проблема стала моей :)

идите к Гору либо на западный хостинг и забейти на эти проблемы. чем раньше сделаете ноги тем лучше.

Аватар пользователя Azerot Azerot 20 августа 2009 в 8:56

Quote:
Все потоки апача работают от имени пользователя

Вот! Насколько мне известно патченые таким образом Apache стабильностью работы не отличаются! Во всяком случае, такие окружения ОЧЕНЬ не советуют использовать в продуктивных системах. С дальнейшим могу согласиться, но и тут есть НО. Как правило в TOP'е далеко не один юзверь, а их штук 5-10. Таким образом, можно, конечно, понять наиболее тяжёлые сайты, но к сожалению ни о какой точности данных измерений речи быть не может. Например, в топе видим 10 юзверей, каждый из которых кушает по 10% CPU. Если бы каждый из них работал без других и потреблял 10%, то вопросов бы и не было - проблем бы он не создавал. Но в том-то и дело, что их 10, а вместе они уже создают проблемы. С другой стороны, кто его знает, возможно в отсутствие 10 остальных, один занимал бы не 10% CPU, а все 30% или даже 70% - кто знает, ведь понять это невозможно. Smile Опять же, даже atop неидеален, потому что % потребления CPU может относится к разным режимам - одно дело USER CPU, другое дело I/O WAIT. А например, инструмента, который показывает какой I/O WAIT потребляет какой процесс в Linux'е нет - ищу уже не первый год.

Аватар пользователя gor gor 20 августа 2009 в 15:54

Azerot wrote:

Вот! Насколько мне известно патченые таким образом Apache стабильностью работы не отличаются! Во всяком случае, такие окружения ОЧЕНЬ не советуют использовать в продуктивных системах

Я использую mod_ruid, немного подправленый собственноручно. Стабильно работает.
Далее должен с вами не согласится. Точность измерения какраз точная, но я ее не использую для учета какой пользователь сколько кушает.

Я сделал по другому. Мною написано специальное ПО, которое какраз предотвращает попытки пользователей положить сервер. Главное правильно написать правила использования. Все это основано на том же алгоритме, что используется в ATOP.

Azerot wrote:
С другой стороны, кто его знает, возможно в отсутствие 10 остальных, один занимал бы не 10% CPU, а все 30% или даже 70% - кто знает, ведь понять это невозможно. Smile Опять же, даже atop неидеален, потому что % потребления CPU может относится к разным режимам - одно дело USER CPU, другое дело I/O WAIT. А например, инструмента, который показывает какой I/O WAIT потребляет какой процесс в Linux'е нет - ищу уже не первый год.

Если одному пользователю надо 70% процессорного времени (не зависимо от наличия других процессов), то ядро линукса (при настройках по умолчанию) попытается предоставить процессу максимально возможное количество процессорного времени. В результате, если не доступно 70% - общий лоад системы - будет больше чем 1ца. При этом ATOP будет верно покахывать % время конкретного процесса или групы процессов. Реально используемое.

Что касается IO, вам надо было искать не по ожиданию (так как по сути это показатель сколько процессор ожидает результатов от IO операций), а по нагрузке операциями IO системы.
И такое средство есть - это все тот же ATOP.
Но чтоб он работал - надо или патчить ядро, или использовать новое ядро собраное с специальной опцией.

Аватар пользователя Azerot Azerot 20 августа 2009 в 17:27

Quote:
Я использую mod_ruid, немного подправленый собственноручно. Стабильно работает.

Дай-то Бог! Учитывая, что сам apache не самая стабильная штука, остаётся только удивляться Smile
Особенно удивляться, потому что последний официальный релиз mod_ruid судя по всему был в 2005 году.

Quote:
Я сделал по другому. Мною написано специальное ПО, которое какраз предотвращает попытки пользователей положить сервер.

Не вы один Smile Без использования подобных примочек (увы) не обойтись.
Также очень неплох mod_overload

Quote:
Если одному пользователю надо 70% процессорного времени (не зависимо от наличия других процессов), то ядро линукса (при настройках по умолчанию) попытается предоставить процессу

Теперь я с вами не соглашусь. Процесс не просит определённый % процессора - он просто работает. А система многозадачности в ОС сама решает сколько % ему дать, исходя из многих условий. При этом у вас неверное понимание load average. LA - это количество процессов, ожидающих процессора, а не ожидающих заказанный процент процессора.

Что касается IO, то ну нет в ядре (патчите вы его или не патчите) процента потребления IO кажным процессом. Утилиты, которые утверждают, что это показывают, на самом деле производят сложные арифметические вычисления на основе nice, priority и общего io wait системы.

Аватар пользователя gor gor 20 августа 2009 в 18:44

Вы по своему правы, если говорить в контексте одного процесса, но , напомню, что я говорю в контексте пользователя. А это группа процессов.
Что касается IO то патченое ядро не показывает %, это верно. Оно показывает сколько операций IO совершил тот или иной процесс, а высчитываение происходит конечно же с привязкой к текушему состоянию системы.

Но в целом приятно встетить понимающего суть вопроса человека.
Вы не заметили? мы уже немного offtopим в топике.
Если есть необходимость продолжить дискусию - всегда рад, пишите на email.

Аватар пользователя Azerot Azerot 2 февраля 2011 в 18:08

it-patrol.com могу посоветовать
Посоветовал бы свой, но мы на друпале не специализируемся, мы битриксологи Smile да и самопиарить себя не хочу
В Патруле очень быстрая поддержка, чего очень не достаёт многим хостерам - ведь когда есть проблема одно из важных обстоятельств видеть что тебя услышали и не динамят.
Опять же важным условием хостера считаю возможность ОБЪЕКТИВНО давать информацию. Мы например, когда клиент интересуется хостингом сперва распрашиваем какой у него сайт, какова посещаемость (хиты, уники, страницы) и затем либо советуем виртуальный (шаред) хостинг, либо честно говорим, что ребята - это можно потянуть тока на выделенном сервере и никак иначе. Да, возможно, таким образом мы не получим особо много клиентов, но с другой стороны мы не будем потом иметь с ними проблем, а они обид на нас.