Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Warning: mysql_connect(): Too many connections in
 
 автор: netman   (09.01.2008 в 03:36)   письмо автору
 
 

Давно хотел спросить, да все руки не доходили.
Отчего вообще виснет сайт?
Сегодня наткнулся :
Warning: mysql_connect() [function.mysql-connect]: Too many connections in /var/www/catalog4/data/www/commerce-center.ru/_application.php on line 42

Перешел по какой-то ссылке и вот это выдало.

Отсюда и вопрос: что это было? Вернее из контекста понятно что это, а вот из-за чего?

А еще читал про условия хостинга в одной конторе, так там было написано что-то вроде "число одновременных запросов к базе данных-16". Т.е. если так выйдет, что 17 "клиентов" одновременно запрос сделают все повиснет?

   
 
 автор: glsv (Дизайнер)   (09.01.2008 в 05:45)   письмо автору
 
   для: netman   (09.01.2008 в 03:36)
 

>Вернее из контекста понятно что это, а вот из-за чего?
Это ограничение, выставленное хостером.

>Т.е. если так выйдет, что 17 "клиентов" одновременно запрос сделают все повиснет?
Если на каждую страницу по одному соединение открывается, то 17-ому будет сказано: "Too many connections". На самом деле, 17 одновременных поединений - это очень много.
Не 17 человек одновременно на сайте находятся, а 17 человек одновременно сделали запрос у сайту.

   
 
 автор: elenaki   (09.01.2008 в 10:30)   письмо автору
 
   для: glsv (Дизайнер)   (09.01.2008 в 05:45)
 

а можно поподробнее? почему 16 соединений не много , а 17 - много? и разве это не те люди,
которые в on-line? ведь каждый клик открывает какую-то статью, значит, делает запрос к
базе. в чем разница между запросом и соединением? разве соединение на прерывается после
прекращения работы скрипта автоматически?

   
 
 автор: cheops   (09.01.2008 в 13:45)   письмо автору
 
   для: elenaki   (09.01.2008 в 10:30)
 

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

>разве соединение на прерывается после
>прекращения работы скрипта автоматически?
Да, если не используется mysql_pconnect() или скрипт не отдаёт большой объём данных в сеть (музыка, объёмный файл и т.п.), а с другой стороны его не качают по диаплапу в течении нескольких часов - если соединение не было закрыто до отправки данных в сеть - оно будет висеть и спать.

   
 
 автор: Faraon   (09.01.2008 в 21:19)   письмо автору
 
   для: cheops   (09.01.2008 в 13:45)
 

>а просто предотвратить падение сервера
В данном случае сервер врядли упадет

   
 
 автор: Faraon   (09.01.2008 в 21:17)   письмо автору
 
   для: glsv (Дизайнер)   (09.01.2008 в 05:45)
 

Не сказал бы, для больших порталов, 17 соеденений одновременно это бывает мало.
Зависит от производительности сервера.

   
 
 автор: cheops   (09.01.2008 в 13:41)   письмо автору
 
   для: netman   (09.01.2008 в 03:36)
 

>Т.е. если так выйдет, что 17 "клиентов" одновременно запрос сделают все повиснет?
17 запрос будет отброшен с ошибкой "Too many connections" - это сделано для того, чтобы не было пиковых потреблений памяти, грозящих падению сервера.

   
 
 автор: elenaki   (09.01.2008 в 13:55)   письмо автору
 
   для: cheops   (09.01.2008 в 13:41)
 

Не 17 человек одновременно на сайте находятся, а 17 человек одновременно сделали запрос у сайту.
====================

объясните,в чем разница? если на сайте одновременно сотни и он не виснет? а потом вдруг
50 чел и виснет?

   
 
 автор: cheops   (09.01.2008 в 14:40)   письмо автору
 
   для: elenaki   (09.01.2008 в 13:55)
 

Нет, на сайте одновременно 100 человек, все вместе они создают примерно 8.6 одновременных соединений (обычно соединения происходят очень быстро), потом заваливается человек 500 и создают 40.2 одновременных содинений - вот тут и срабатывает ограничение.

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

   
 
 автор: oradev   (09.01.2008 в 19:58)   письмо автору
 
   для: cheops   (09.01.2008 в 14:40)
 

cheops, если поддержка пула-соединений в MySQL предусмотрена, есть ли возможность влиять на число соединений, находящихся в этом пуле ( уведличивать их число или уменьшать)

   
 
 автор: cheops   (10.01.2008 в 14:10)   письмо автору
 
   для: oradev   (09.01.2008 в 19:58)
 

Да, количество одновременных соединений определяется директивой max_connections (my.ini), кроме того можно ограничить конкретного пользователя в количестве одновременных соединений при помощи системной переменной max_user_connections. Можно и длинной очереди запросов управлять, но директиву сейчас на вскидку не вспомню, нужно в мануале рыться.

   
 
 автор: netman   (10.01.2008 в 11:49)   письмо автору
 
   для: cheops   (09.01.2008 в 13:41)
 

>17 запрос будет отброшен с ошибкой "Too many connections" - это сделано для того, чтобы не было пиковых потреблений памяти, грозящих падению сервера.

Спасибо всем за ответы!

Еще одна неясность: если отключить вывод ошибок, "Too many connections" будет выводиться

или нет? Не хочу чтобы кто-то видел как у меня все устроено. Это ведь вроде обычный

php-notice?

Кстати, эти warning`ги как то нумеруются (типа ошибка номер...)?

   
 
 автор: cheops   (10.01.2008 в 14:12)   письмо автору
 
   для: netman   (10.01.2008 в 11:49)
 

Если отключите - выводится не будут, можно запретить вывод только этого предупреждения при помощи @
<?php
  $dbcnx 
= @mysql_connect($dblocation,$dbuser,$dbpasswd);
?>

   
 
 автор: netman   (10.01.2008 в 22:22)   письмо автору
 
   для: cheops   (10.01.2008 в 14:12)
 

Когда работаю, и не думаю что-то отключать. Но публиковать, мне кажется, надо с отключенными noticами.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования