Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Нагрузка на веб сервер и MySQL убивает, спасайте

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

inche0n



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Всем привет! сыпит 503 ошибка
ПОМОГИТЕ, решит ли мою проблему наращивание мощности, а если точнее - переезд на такой конфиг:
 
2 x Intel Xeon 2,66–2,8 GHz, 4 Gb RAM, 2х146 Gb SCSI HDD
 
куда еще оптимизировать запросы, уменьшать их кол-во итп.  

Всего записей: 3127 | Зарегистр. 03-11-2002 | Отправлено: 19:49 06-08-2012 | Исправлено: inche0n, 03:35 08-08-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
inche0n

Цитата:
куда еще оптимизировать запросы, уменьшать их кол-во итп.  

использовать кэширование.
либо страниц целиком, либо блоков на странице.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:55 06-08-2012
inche0n



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 
 
использовать кэширование.
либо страниц целиком, либо блоков на странице.

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

Всего записей: 3127 | Зарегистр. 03-11-2002 | Отправлено: 19:59 06-08-2012 | Исправлено: inche0n, 20:00 06-08-2012
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
inche0n

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

ну и что? я и говорю - кэширование блоков, которые не изменились.
если у разных людей один блок отображается неизменно - зачем тратить ресурсы на его получение? да, тут уже думать нужно, но результат стоит того.
я как стал memcached использовать, так работа многих скриптов (его поддерживающих), так ускорилась.
 
+ аггрегировать css и js файлы, чтобы меньше запросов было к серверу или поставить фронтенд на основе nginx, который и будет бОльшую часть статики кэшировать

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:23 06-08-2012
inche0n



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
или поставить фронтенд на основе nginx, который и будет бОльшую часть статики кэшировать

 
nginx стоит. что к нему нужно добавить? оно само будет кешировать?) я просто совсем далек от кодинга и понимаю слабо
 
дело в том, что одно и то же разным людям мы не показываем, все видят разное
 
Добавлено:
сильно ли изменит положение дел переезд с конфига
 
 
1 x Intel Quad Core X3210, 2,13 GHz, 2 x 750 GB, 8 GB RAM
 
 
 
на
 
2 x Intel Xeon 2,66–2,8 GHz, 4 Gb RAM, 2х146 Gb SCSI HDD

Всего записей: 3127 | Зарегистр. 03-11-2002 | Отправлено: 22:58 06-08-2012 | Исправлено: inche0n, 23:22 06-08-2012
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Доброе время суток. Решил написать, что бы как то прояснить столпотворение в голове, поскольку что то завяз. Не админ, программист, но приходиться админить. Сервер, понятно, падает. Обычно, когда у нас вечер, а в Америке утро, у них там, видимо, все просыпаются, и начинается…  
 
Ubuntu на Rackspace, Apache 2.2, PHP 5.3, MySQL 5.5. Про то, что Apache - динозавр, и многие уже давно используют связку PHP-FastCGI - nginx и какую то альтернативу MySQL я знаю, но на переход мы пока не решились, поэтому оптимизация должна вестись на существующем конфиге.
 
Длинные запросы я уже при помощи slow_query_log отловил, что то проиндексировал что то оптимизировал. На пару месяцев помогло, но сейчас сервер снова не выдерживает, когда траффик повышается.  
И сейчас в голове что то всё перемешалось…
В топе вижу что mysqld грузит CPU на 250% . Что это значит, каков следующий шаг? Из slow_query_log я знаю, что у меня есть запросы, которые продолжаются до 20-и секунд. Ну и что… Я вовсе не убеждён, что именно они являются причиной падения сервера. Ведь есть же ещё траффик. То есть, могут быть единичные длинные запросы, но сервер валить короткие, но зато которых миллионы.  
Выходит, надо анализировать мой access log, из него выявлять мои основные HTTP Requests, потом запускать их в Профайлере, и там выявлять bottleneck?
 
Ещё вопрос… Rackspace предлагает Load Balancers. Что правильнее, начать разбираться, как их подключить, или просто увеличить память и добавить ещё один сердечник?
 
Сказал руководителю, давайте увеличим ресурсы, однако, траффик.  
А он мне: «А почему, когда сервер падает, и мы делаем reboot, нагрузка на него резко падает?. Что, от ребута все пользователи резко разбегаются?».  
Я ему в ответ - однако, memory leakage.  
А сам думаю… прав начальник, не думаю я, что только утечкой памяти можно объяснить такое резкое снижение нагрузки после ребута.  
 
Ещё кеширование… На занимался ещё этим на уровне сервера вообще. Значит сейчас надо срочно начинать RTFM по кешированию MySQL? Именно это мне сейчас должно помочь?

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 11:42 03-06-2013 | Исправлено: israel_rider, 11:46 03-06-2013
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Так, может, после такого подробного описания ситуации и сам используемый в настоящее время конфиг MySQL стоило опубликовать, не?

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 07:41 04-06-2013
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
reenoip, Вы безусловно правы.  
Вот мой my.cnf  - http://rghost.net/46494861 .  
 
Вот соответствующие настройки из apache2.conf:
 
<IfModule mpm_prefork_module>
    StartServers          16
    MinSpareServers       8
    MaxSpareServers       80
    MaxClients           60
    MaxRequestsPerChild  300
</IfModule>
 
<IfModule mpm_worker_module>
    StartServers          2
    MinSpareThreads      25
    MaxSpareThreads      75  
    ThreadLimit          64
    ThreadsPerChild      25
    MaxClients          30
    MaxRequestsPerChild   0
</IfModule>
 
<IfModule mpm_event_module>
    StartServers          2
    MaxClients          150
    MinSpareThreads      25
    MaxSpareThreads      75  
    ThreadLimit          64
    ThreadsPerChild      25
    MaxRequestsPerChild   0
</IfModule>
 
Ещё добавлю, что, как показал опыт, когда сервер падает, мне не нужно делать рестарт всего сервера, достаточно только перезапустить mysqld - service mysql restart.  
То есть, если я правильно понимаю, при перезапуске mysqld аннулируются все queries, скопившиеся в очереди, и таким образом валящие сервер. И после этого я снова вижу, что ресурсы освободились.

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 11:05 04-06-2013 | Исправлено: israel_rider, 11:09 04-06-2013
SpiderR

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
>>>Длинные запросы я уже при помощи slow_query_log отловил, что то проиндексировал что то  
>>>оптимизировал. На пару месяцев помогло
>>>
>>>Из slow_query_log я знаю, что у меня есть запросы, которые продолжаются до 20-и секунд
 
Нужно избавляться от медленных запросов, ловите, индексируйте поля. Отсутствие индексации - основная проблема обычно.
Возможно, если запросы сложные, стоит пересмотреть логику их формирования.  
Возможно стоит пересмотреть логику хранения данных, уменьшить объемы часто используемых таблиц, убрав из них устаревшие данные...
 
Все эти действия спасают в 80% случаях, и можно обойтись без наращивания мощностей.
 
 
Добавлено:
Хорошо помогает знание нагрузки на сервер - количество запросов в минуту, распределение запросов по времени суток, самые посещаемые страницы.  Если есть статистки по предыдущим месяцам, то можно сравнить на предмет не появились ли где аномалии.  
 
Я access.log'и парсю при помощи awstats, меня полностью устраивает он в этом плане.
 
Можно найти страницы сайта, которые генерируют самые медленные запросы, отключить их, посмотреть что будет.  По результатам наблюдений - напинать программеру.  
 
Можно что-нибудь организационно-серверное предпринять. Повесить на 80 порт nginx и отдавать всю статику через него, оставить на откуп апачу только php, например.

Всего записей: 5 | Зарегистр. 12-03-2007 | Отправлено: 15:00 04-06-2013
israel_rider

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SpiderR
Вот мой основной запрос, который в основном бомбит мою базу, и в часы пик длится до 20 секунд.
 
SELECT `id` FROM `application_user` `t`  
WHERE app_id= (Здесь у меня integer)
AND device_token='(Здесь у меня hash типа MD5, размером от 32 до 64)'  
LIMIT 1;
 
Индексы на поля app_id и device_token естественно стоят.
 
Вот результат EXPLAIN EXTENDED
id    select_type    table    type    possible_keys    key    key_len    ref    rows    filtered    Extra
1    SIMPLE    t    ref    app_user_cms_user_index,fk_application_user_application1    fk_application_user_application1    5    const    75810    100.00    Using where
 
Не могли бы Вы мне помочь всё это объяснить?  

Всего записей: 925 | Зарегистр. 28-07-2007 | Отправлено: 15:25 04-06-2013
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Нагрузка на веб сервер и MySQL убивает, спасайте


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru