|
|
|
Вопрос о перегрузках
|
|||
|---|---|---|---|
|
#18+
Добрый день всем! У меня на сегодняшний день существует такая пробема: есть рейтинговая сеть и при одновременых обращениях около 100 запросах база отрубается и пишет что сильно много подключений я понимаю что это нужно по ковыряться в настройках сервера и увеличить лимит подключений одновременых у меня вопрос в другом сколько sql практически может выполнить одновременых запросов (все запросы к разным таблицам одной базы) ? и что можно сделать что б мощность эту увеличить скажем хотя б до 15 000 одновременых запросов у меня просто база счас не тянет 100 одновременых подключений к ней и может помочь если поставить постоянное подключение? pconnect ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2004, 14:04 |
|
||
|
Вопрос о перегрузках
|
|||
|---|---|---|---|
|
#18+
У нас 2-процессорная тачка с 2 Gb RAM Больше 300 процессов не ставим. А если тормозит рейтинг - пересмотри структуру данных. Группируй статистику. Вычисляй, к примеру, рейтинг раз в час. CPU-usage какой у тебя? Если 100% - проблема исключительно в оптимизации запросов. И если при этом ещё и добавить число подключений одновременных - будет ещё хуже. Какой размер всех часто используемых таблиц? Если он больше размера оперативки на сервере - добавь RAM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2004, 22:11 |
|
||
|
Вопрос о перегрузках
|
|||
|---|---|---|---|
|
#18+
У нас 2-процессорная тачка с 2 Gb RAM Больше 300 процессов не ставим. А если тормозит рейтинг - пересмотри структуру данных. Группируй статистику. Вычисляй, к примеру, рейтинг раз в час. статистика обновляется раз пол часа глючить сами текучие обработки данных мне говорят люди что лучше их скидывать в файлы а атуда раз в пол часа в базу но меня берут сомнения в таком способе CPU-usage какой у тебя? Если 100% - проблема исключительно в оптимизации запросов. И если при этом ещё и добавить число подключений одновременных - будет ещё хуже. Какой размер всех часто используемых таблиц? ихний размер не более 5000 записей каждой а всего штук 100 около 1 метра всего :-) рейтинг новый Если он больше размера оперативки на сервере - добавь RAM. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2004, 03:26 |
|
||
|
Вопрос о перегрузках
|
|||
|---|---|---|---|
|
#18+
addassУ нас 2-процессорная тачка с 2 Gb RAM Больше 300 процессов не ставим. Очень сильно зависит от структуры запросов, да и вообще загрузки сервера... Как пример, на одном из моих вебсерверов (P4-2.6 HT, 512Mb RAM) крутится некоторое количество проектов различной степени загруженности и безумности запросов к базам (в т.ч. и нечто схожее, полагаю, с "рейтинговой сетью" -- небольшая баннерная сеть), для данной системы опытным путём было установлено оптимальное количество разрешённых соединений в 250. Собственно, можно было бы и несколько большее количество выставить -- не нужно. При том, что на сервере не одна сеть, а и, например, официальное русское зеркало php.net, того же mysql.com и другие достаточно загруженные сайты. Так что тут всё выясняется опытным путём. Практические советы: 1. CPU-usage какой у тебя? Если 100% - проблема исключительно в оптимизации запросов. И если при этом ещё и добавить число подключений одновременных - будет ещё хуже. Факт. Если дело обстоит именно так -- то либо пересматривать запросы и структуру базы (индексы под них строить дополнительные и т.п.), либо ставить отдельный сервер SQL... Однако! Судя по описанию, скорей всего, ситуация та же, что, в своё время, возникла там у меня на сервере: множество соединений незакрытых корректно, и висящих, пока по таймауту не прибьются. В таком случае поможет 2. Погляди SHOW PROCESSLIST в клиенте mysql, либо #musqladmin -p processlist. Если большая часть процессов выглядит примерно так: +--------+--------+-----------+------------+---------+------+-------+------------------+ | Id | User | Host | db | Command | Time | State | Info | +--------+--------+-----------+------------+---------+------+-------+------------------+ | 988905 | user1 | localhost | user1 | Sleep | 300 | | | | 989065 | user2 | localhost | user2 | Sleep | 142 | | | | 989191 | user2 | localhost | user2 | Sleep | 9 | | | | 989210 | user2 | localhost | user2 | Sleep | 17 | | | | 989220 | user3 | localhost | user3 | Sleep | 1 | | | и в рабочем режиме остаётся свободная память (Inact, Free) -- можешь смело увеличивать цифру соединений (для начала из клиента mysql: SET GLOBAL max_connections=150) 150 для примера, если памяти много свободной -- то больше. В качестве грубой оценки погляди размер процесса mysqld для сотни соединений, прикинь, сколько можно добавить, исходя из свободной памяти, ну и оставь немного запасу, бо если начнёт активно свопится -- труба... 3. Если этим методом не удастся достичь приемлемого количества соединений (вдруг действительно нужно 15к) -- читай http://dev.mysql.com/doc/mysql/ru/Server_parameters.html о "малой памяти и большом количестве соединений" и думай, всё же, о выделенном сервере MySQL,) З.Ы. Да, если, всё же, процессы не спят, а активно думают -- в отладке поможет добавление в my.cnf чего-нить вроде log_slow_queries=/var/db/mysql/slow-queries.log set-variable = long_query_time=2 А выясненное оптимальное количество соединений надо будет прописать там же примерно так: set-variable = max_connections=250 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2004, 23:06 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=673&tid=1854644]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 427ms |

| 0 / 0 |
