Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> MySQL перегрузка запросами, как этого избежать? 
V
    Опции темы
azesmcar
Дата 6.5.2010, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Добрый день,

Есть веб-программа, работающая с MySQL 5.0.45, если открыть какой нибудь отчет, потом нажать и удерживать refresh на несколько секунд, то MySQL начинает поедать все ресурсы компьютера, и так может продлиться до пары часов, потом нагрузка сама по себе снижается. Естественно, что в это время сервер практически не отвечает на запросы других пользователей, что очень неприятно, как можно от этого защититься? Программа не моя, база тоже, единственное что можно менять это настройки.

Заранее спасибо.
PM   Вверх
gcc
Дата 6.5.2010, 13:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



может poll_connect (в любом случае будет одно соединение) ?
если процессы просто висят, то убивать из через время... как вараинт...

Это сообщение отредактировал(а) gcc - 6.5.2010, 13:40
PM WWW ICQ Skype GTalk Jabber   Вверх
azesmcar
Дата 6.5.2010, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(gcc @  6.5.2010,  13:37 Найти цитируемый пост)
может poll_connect (в любом случае будет одно соединение) ?

доступа к исходникам у меня нет, я не имею право чего либо там менять, это коммерческая программа.

Цитата(gcc @  6.5.2010,  13:37 Найти цитируемый пост)
если процессы просто висят, то убивать из через время... как вараинт...

они и так убиваются mysql-ом через некоторое время, но мне хочется не допускать этой ситуации а не исправлять ее.


Это сообщение отредактировал(а) azesmcar - 6.5.2010, 13:55
PM   Вверх
gcc
Дата 6.5.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



может быть соединение не правильно выключается (с ошибкой, у меня такое было) или не выключается, по этому нужное исправить в исходниках? если закрыты - то никак..

poll_connect включается там где настройки подключения к msyql, там тоже нельзя включить poll_connect ?

Это сообщение отредактировал(а) gcc - 6.5.2010, 14:08
PM WWW ICQ Skype GTalk Jabber   Вверх
azesmcar
Дата 6.5.2010, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(gcc @  6.5.2010,  14:07 Найти цитируемый пост)
может быть соединение не правильно выключается или не выключается, по этому нужное исправить в исходниках? если закрыты - то никак..

открыты, но менять я не имею права, это совсем уж крайний случай.

Цитата(gcc @  6.5.2010,  14:07 Найти цитируемый пост)
poll_connect включается там где настройки подключения к msyql, там тоже нельзя включить poll_connect ? 

это где вообще? что за функция?
PM   Вверх
gcc
Дата 6.5.2010, 14:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



Цитата(azesmcar @ 6.5.2010,  14:09)
это где вообще? что за функция?

http://www.google.com.ua/#hl=uk&source...a49903835a62d42

вызвать метод pool connect - передать драйверу чтобы был режим "pool connect" чтобы жервал соединение а базой постоянное...

Это сообщение отредактировал(а) gcc - 6.5.2010, 14:34
PM WWW ICQ Skype GTalk Jabber   Вверх
azesmcar
Дата 6.5.2010, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



gcc

А причем тут MySQL Connector/J??? Мне нужна опция настроек MySQL а не другой способ соединения, я не могу менять код программы. 
Я понятия не имею как она работает и как цепляется к базе данных, меня интересует решение проблемы методом настройки, т.е. если даже база выдаст ошибку пользователю, который будет так хулиганить это тоже решение, мне все равно, я просто не хочу, чтобы один пользователь убил всю систему одной кнопкой.

Это сообщение отредактировал(а) azesmcar - 6.5.2010, 14:34
PM   Вверх
gcc
Дата 6.5.2010, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



azesmcar, сори, ну я же не знаю, просто предложил...

timeout'ы в конфиге mysql может поставить(настроить) ?

как-то так smile

my.cnf
Код

interactive_timeout=3000
wait_timeout=9000
connect_timeout=550


Это сообщение отредактировал(а) gcc - 6.5.2010, 14:46
PM WWW ICQ Skype GTalk Jabber   Вверх
azesmcar
Дата 6.5.2010, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(gcc @  6.5.2010,  14:40 Найти цитируемый пост)
timeout'ы в конфиге mysql может поставить(настроить) ?

как-то так smile

т.е. так он будет быстрее убивать ненужные процессы, но это не защитит от такой аттаки smile

Добавлено через 2 минуты и 28 секунд
Цитата(gcc @  6.5.2010,  14:40 Найти цитируемый пост)
timeout'ы в конфиге mysql может поставить(настроить) ?

а нельзя как нибудь запретить? даже не знаю, пытаюсь сформулировать вопрос и понимаю что может дело даже не в MySQL-е? может с веб-сервером надо что-то сделать?
PM   Вверх
gcc
Дата 6.5.2010, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



разве это "атака"? 

у меня вариантов больше нету...

(те кто написали код в котром ошибка с подключением к mysql - пускай они и исправояют эту ошибку)
у меня была проблема тут http://forum.vingrad.ru/forum/topic-268700...25B5/index.html

Это сообщение отредактировал(а) gcc - 6.5.2010, 15:44
PM WWW ICQ Skype GTalk Jabber   Вверх
azesmcar
Дата 6.5.2010, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



Цитата(gcc @  6.5.2010,  15:33 Найти цитируемый пост)
разве это "атака"? 

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

PM   Вверх
gcc
Дата 6.5.2010, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



azesmcar, вспомнил, в догонку:

у меня был один фреймворк, если включить в режиме встроенного веб-сервера (т.е. работает на самописном веб-сервере, как демон, их много), то он генерил ошибки когда работал с mysql почему-то и соединения "висели"...

если переключить в режим mod_perl, то этой ошибки нету, там правда включается pool connect автоматически, вродебы (которые делает максимум 1 соедиенние...)

может быть что-то на веб-сервере мешает....

если работает в режиме cgi/fastcgi, то может попробовать включить в mod_* apache22 ...

Это сообщение отредактировал(а) gcc - 6.5.2010, 15:52
PM WWW ICQ Skype GTalk Jabber   Вверх
azesmcar
Дата 6.5.2010, 15:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 6
Всего: 211



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

Это сообщение отредактировал(а) azesmcar - 6.5.2010, 15:56
PM   Вверх
gcc
Дата 6.5.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Агент алкомафии
****


Профиль
Группа: Участник
Сообщений: 2691
Регистрация: 25.4.2008
Где: %&й

Репутация: 3
Всего: 17



azesmcar, а в каком режиме perl? есть ли режим mod_perl в настройках вашей программы? 

там в mod_perl дожен переключиться в Apache::DBI и автоматически должен включиться в pool connect smile  smile 

http://search.cpan.org/~abh/Apache-DBI-1.0...b/Apache/DBI.pm

Цитата

The dbi_connect_method attribute can be used to specify which driver method should be called to establish the connection. The only useful values are 'connect', 'connect_cached', or some specialized case like 'Apache::DBI::connect' (which is automatically the default when running within Apache).

Note that the behaviour of this method differs in several respects from the behaviour of persistent connections implemented by Apache::DBI. However, if Apache::DBI is loaded then connect_cached will use it.

Caching connections can be useful in some applications, but it can also cause problems, such as too many connections, and so should be used with care. In particular, avoid changing the attributes of a database handle created via connect_cached() because it will affect other code that may be using the same handle. When connect_cached() returns a handle the attributes will be reset to their initial values. This can cause problems, especially with the AutoCommit attribute.


http://search.cpan.org/~timb/DBI-1.611/DBI.pm#connect


т.е. заменить connect на connect_cached - мне это помогло

Это сообщение отредактировал(а) gcc - 6.5.2010, 17:09
PM WWW ICQ Skype GTalk Jabber   Вверх
Zloxa
Дата 6.5.2010, 16:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3470
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



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

както такsmile 


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.2650 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.