Помогите определить что грузить сервер...

12 3
getro
На сайте с 24.02.2009
Offline
56
3773

Постоянно стал происходить перерасход ресурсов сервера и сайт блокируется...

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

двиг: dle 7.5

хостинг: rackserver

размер базы mysql: почти 500 мб

количество посетителей: порядка 1100-1300 уников

В письме после блокировки такое дело:

[---START REPORT---]

top - 12:47:18 up 158 days, 17:57, 1 user, load average: 45.14, 45.18, 38.27
Tasks: 320 total, 35 running, 281 sleeping, 3 stopped, 1 zombie
Cpu(s): 36.4%us, 62.8%sy, 0.0%ni, 55.0%id, 10.2%wa, 0.0%hi, 0.4%si, 0.0%st
Mem: 12462320k total, 11470304k used, 992016k free, 342444k buffers
Swap: 4199036k total, 2920k used, 4196116k free, 8322688k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND
14171 mysql 15 0 627m 545m 4716 S 101.8 4.5 868:33.90 mysqld
27609 saxsonr 25 0 79860 19m 8880 R 27.5 0.2 1:02.40 php
840 saxsonr 25 0 80168 20m 8804 R 26.5 0.2 0:48.91 php
13970 saxsonr 25 0 80168 20m 8816 R 26.5 0.2 0:16.01 php
17942 saxsonr 20 0 79860 19m 8876 R 23.2 0.2 0:02.82 php
28657 saxsonr 25 0 80168 20m 8808 R 23.2 0.2 1:02.43 php
21829 saxsonr 25 0 80168 20m 8800 R 21.6 0.2 1:19.25 php
22360 saxsonr 25 0 79876 19m 8924 R 21.6 0.2 1:11.82 php
17807 saxsonr 19 0 80184 20m 8800 R 20.6 0.2 0:03.13 php
15344 saxsonr 25 0 80168 20m 8816 R 20.2 0.2 1:26.42 php
13868 saxsonr 25 0 80168 20m 8800 R 19.6 0.2 0:16.21 php
7054 saxsonr 25 0 80168 21m 9220 R 19.2 0.2 0:34.69 php
16488 saxsonr 25 0 79876 21m 9212 R 18.6 0.2 0:07.00 php
13872 saxsonr 25 0 80184 21m 9208 R 16.9 0.2 0:16.73 php
7909 saxsonr 25 0 80168 21m 9220 R 16.6 0.2 0:26.52 php
11123 saxsonr 25 0 79876 19m 8812 R 16.6 0.2 0:21.99 php
13325 saxsonr 25 0 80168 20m 8800 R 16.6 0.2 0:18.53 php
16263 saxsonr 25 0 80168 20m 8812 R 16.6 0.2 1:23.52 php
16381 saxsonr 25 0 80168 20m 8800 R 16.6 0.2 1:29.99 php
18096 saxsonr 16 0 80168 20m 8820 R 16.2 0.2 0:00.49 php
27943 saxsonr 25 0 80168 21m 9236 R 12.6 0.2 1:02.19 php
16743 saxsonr 25 0 80188 20m 8756 S 9.9 0.2 0:06.29 php
23364 saxsonr 25 0 80168 20m 8816 R 9.9 0.2 1:07.21 php
4126 saxsonr 25 0 79872 19m 8948 R 9.3 0.2 0:38.90 php
2234 saxsonr 25 0 80168 20m 8808 R 9.0 0.2 0:40.39 php
18095 saxsonr 15 0 31488 14m 7688 R 8.0 0.1 0:00.24 php
18110 saxsonr 16 0 79944 21m 8956 S 6.3 0.2 0:00.19 php

======================================================================
grep 5/Apr/2012 /etc/httpd/domlogs/saxson.ru | wc -l
170204
======================================================================
mysqladmin pr
-------- --------------- ----------- --------------- --------- ------ ---------------------- ------------------------------------------------------------------------------------------------------
| Id | User | Host | db | Command | Time | State | Info |
-------- --------------- ----------- --------------- --------- ------ ---------------------- ------------------------------------------------------------------------------------------------------
| 382059 | saxsonr | localhost | saxsonr_2010 | Sleep | 196 | | |
| 382654 | saxsonr | localhost | saxsonr_2010 | Sleep | 114 | | |
| 382991 | saxsonr | localhost | saxsonr_2010 | Sleep | 67 | | |
| 383099 | saxsonr | localhost | saxsonr_2010 | Sleep | 56 | | |
| 383114 | saxsonr | localhost | saxsonr_2010 | Sleep | 54 | | |
| 383134 | saxsonr | localhost | saxsonr_2010 | Sleep | 52 | | |
| 383487 | saxsonr | localhost | saxsonr_2010 | Query | 4 | Locked | SELECT id, date, title, short_story, SUBSTRING_INDEX(category,,,1) as category, alt_name, flag FRO |
| 383492 | saxsonr | localhost | saxsonr_2010 | Query | 4 | Locked | SELECT id, date, title, short_story, SUBSTRING_INDEX(category,,,1) as category, alt_name, flag FRO |
| 383498 | saxsonr | localhost | saxsonr_2010 | Query | 4 | Locked | UPDATE dle_post set news_read=news_read 1 where id=10075 |
| 383497 | saxsonr | localhost | saxsonr_2010 | Query | 5 | Copying to tmp table | SELECT id, date, title, short_story, SUBSTRING_INDEX(category,,,1) as category, alt_name, flag FRO |
| 383509 | saxsonr | localhost | saxsonr_2010 | Query | 4 | Locked | SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name |
| 383514 | saxsonr | localhost | saxsonr_2010 | Query | 3 | Locked | SELECT id, autor, date, short_story, full_story, xfields, title, category, descr, keywords, alt_name |
-------- --------------- ----------- --------------- --------- ------ ---------------------- ------------------------------------------------------------------------------------------------------
[---END REPORT---]

скажите где копать, с чего начать? какую статистику смотреть?

Любопытно, что посетителей немного, а статистика сервера, в прошлое падение показывала более 100 тыс. наверное в этом дело, только откуда это все непонятно, в реале такого количества юзверей нет конечно... Предлагают идти на впс, но думаю ещё совсем не время...

Помогите пожалуйста разобраться!

Pop-Up`s Маздай (http://saxson.ru) Стабильная тизерная сеть: высокий конверт, цена, своевременные выплаты (http://visitweb.com/?r=r4sssKRdxaPbfy6VEaHPGCgxpFXeW)
Andreyka
На сайте с 19.02.2005
Offline
822
#1

1. Ставишь себе на компьютер сборку софта как у хостера + режим отладки

2. Ставишь себе jmeter

3. Делаешь сценарий в jmeter

4. Смотришь на результаты отладки

5. Делаешь выводы

Не стоит плодить сущности без необходимости
bugsmoran
На сайте с 18.02.2010
Offline
223
#2

Cpu(s) можно развернуть в нормальное состояние? (на цифру 1 раскрывается).

Вообще конечно мало оснований делать выводы, но сочетание DLE + куча процессов PHP - стандартный баг DLE, который ставит локи и начинает убивать сервер количеством процессов, спотыкаясь об эти собственные локи.

Кроме того, обратите внимание на show processlist - почему тут тоже локи? Попробуйте на InnoDB перейти - пусть хоть построчно лочит, а не целиком таблицу.

Вообще конечно все советы очень пространные. Нужно больше информации. И начать надо с того, за что лочат: диск, процессор, память, и т.д.

Снять iotop в момент лока тоже не плохо бы было.

getro
На сайте с 24.02.2009
Offline
56
#3
Cpu(s) можно развернуть в нормальное состояние? (на цифру 1 раскрывается).

Где этот отчёт посмотреть даже не знаю, мне на мыло в текстовом варианте был выслан, там cpu никак не развернуть...

Изначально грузит процессор, в следствии большого количества обращений. Затем все остальные ресурсы...

---------- Добавлено 05.04.2012 в 21:58 ----------

Глянул состояние sql:

Статистика запросов: со времени запуска, на сервер было отослано запросов - 27,961,831

красным помечены некоторые места:

Slow_queriesДокументация 	503 	Количество запросов, выполнявшихся более long_query_time секунд.Документация

Innodb_buffer_pool_readsДокументация 2.8 M Количество последовательных запросов на чтение, которые InnoDB не смог выполнить из буферного пула и использовал постраничное чтение.

Handler_read_rndДокументация 105.1 M Количество запросов, на чтение строки, основанных на ее позиции. Большое значение переменной может быть обусловлено частым выполнением запросов использующих сортировку результата, выполнением большого числа запросов требующих полного сканирования таблиц, наличием объединений не использующих индексы надлежащим образом.

Handler_read_rnd_nextДокументация 93.9 M Количество запросов на чтение следующей строки из файла данных. Данное значение будет высоким, при частом сканировании таблиц. Обычно это означает, что таблицы не проиндексированы надлежащим образом или запросы не используют преимущества индексов.

Qcache_lowmem_prunesДокументация 1.1 M Количество запросов, удаленных из кеша для освобождения памяти под кеширование новых запросов. Эта информация может помочь при настройке размера кеша запросов. Кеш запросов использует стратегию LRU (дольше всего не использующиеся страницы заменяются новыми) при принятии решения об удаления запроса из кеша.

Created_tmp_disk_tablesДокументация 383.1 k Количество временных таблиц, автоматически созданных сервером на диске, во время выполнения SQL-выражений. Если значение Created_tmp_disk_tables велико, следует увеличить значение переменной tmp_table_size, чтобы временные таблицы располагались в памяти, а не на жестком диске.

Select_full_joinДокументация 22.9 k Количество запросов-объединений, выполненных без использования индексов. Если значение переменной не равно 0, рекомендуется проверить индексы таблиц.

Select_range_checkДокументация 3.3 k Количество запросов-объединений, выполненных с использованием поиска по диапазону для выборки строк из вторичной таблицы. Если значение переменной не равно 0, рекомендуется проверить индексы таблиц.

Sort_merge_passesДокументация 3.6 k Количество проходов, сделанных алгоритмом сортировки. При большом значении следует увеличить значение переменной sort_buffer_size.

Opened_tablesДокументация 564.5 k Общее количество открывавшихся таблиц. При большом значении переменной рекомендуется увеличить размер кеша таблиц (table_cache).

table_locks_waitedДокументация 35.1 k Количество запросов на блокировку таблицы, которые были удовлетворены только после определенного периода ожидания. Если значение велико и есть проблемы с производительностью, необходимо сначала оптимизировать свои запросы, а затем разбить свою таблицу (или таблицы) или использовать репликацию.

Здесь нет полезной информации?

N
На сайте с 06.05.2007
Offline
419
#4
bugsmoran:
Кроме того, обратите внимание на show processlist - почему тут тоже локи? Попробуйте на InnoDB перейти - пусть хоть построчно лочит, а не целиком таблицу.

Нигде в DLE нет кода, который намеренно что-то лочит. Лочит mysql вследствие непродуманных sql-запросов DLE.

В dle нельзя так просто перейти на innodb, потому что там fulltext-индексы.

Делайте апгрейд движка.

Кешируйте страницы, наплевав на нормальных пользователей.

Удаляйте лишние модули.

И сокращайте базу, если больше ничего не сможете.

Кнопка вызова админа ()
getro
На сайте с 24.02.2009
Offline
56
#5

А как вычислить откуда идут "непродуманные запросы"? как определить какой модуль может так напрягать?

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

N
На сайте с 06.05.2007
Offline
419
#6

Ну как-нибудь по исходному коду поискать целиком или частями.

Вот этот запрос больше всего похож на проблемный :

SELECT id, date, title, short_story, SUBSTRING_INDEX(category,,,1) as category, alt_name, flag FRO |

к сожалению, текст запроса не полный. Тут хостер несколько не продумал механизм уведомления.

---------- Добавлено 05.04.2012 в 22:26 ----------

Внезапно погуглил и делаю вывод, что это модуль "Случайные новости из текущей категории"

$rr = $db->query("SELECT id, title, SUBSTRING_INDEX(category,\",\",1) as category, alt_name, flag FROM ".PREFIX ."_post where approve='1' AND category='$category_id' ORDER by RAND() LIMIT 0,5");

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

getro
На сайте с 24.02.2009
Offline
56
#7

Сейчас отрублю его... а как посмотреть количество запросов к базе?

S
На сайте с 23.12.2008
Offline
132
#8

Странно что при такой посещаемости темболее на DLE так ест русурсы, зачастую при наборе модулей на WP такая ситуация случается, база слишком большая попробуйте почистить базу + обновите движек да и заодно такую отзывчивую тех поддержку надо заменить на новую.

1к-50-100$ Тизерка товаров (http://clck.ru/DSyz) клик 15-35 центов
N
На сайте с 06.05.2007
Offline
419
#9
getro:
как посмотреть количество запросов к базе?

Можно, но это мало что скажет. Большое число простых запросов может создавать меньше нагрузки чем один сложный. В данном случае запрос всего один но выполнялся не менее 5 секунд и блокировал другие скрипты.

В DLE должны быть опции или расширения чтобы выводить на странице такую информацию.

Обычно общее число запросов от вашего имени на хостинге узнать нельзя если хостер специально не даст такой возможности.

getro
На сайте с 24.02.2009
Offline
56
#10

Скажите сколько % ресурсов процессора должен жрать мой сайт с имеющимися показателями на данном движке, примерно...

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий