Ошибки при подключении к mysql.

tend

Новичок
Ошибки при подключении к mysql.

Всем привет!

Такая ситуация: посещаемость сайта возросла и начали появляться ошибки, связанные с подключением к mysql.
Были вот такие ошибки:
1. mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (11)
2. mysql_connect(): Too many connections

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

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

Выделенный сервер на данный момент я не могу себе позволить.
А вот что можно придумать с оптимизацией?
Кто-то сталкивался с подобными ситуациями? Дайте, пожалуйста, парочку советов.

Что посоветуете сделать, если появляется ошибка, связанная с максимальным количеством соединений?
Может как-то можно узнавать, максимальное ли количество соединений набрано, и если да, тогда ждать пока кто-то отключится, и потом подключаться. Так можно сделать?

Я в своих скриптах не закрываю соединения с mysql. Это на что-то влияет?
У Котерова прочитал, что после выполнения сценария соединение само закрывается. Это действительно так? Или может лучше самому закрывать соединение после выполнения скрипта?

В общем, буду благодарен за любые возможные пути решения данного вопроса.
 

Фанат

oncle terrible
Команда форума
1. убедиться, что нигде не используется pconnect.
2. ответить на вопрос - какова нагрузка на сайт и базу в частности.
 

tend

Новичок
Фанат
1. Судя по тому, что я не знаю что такое pconnect, смею сказать, что его нигде не использую. :)
2. Посещаемость сайта около 1500 посетителей в день. А что значит "нагрузка на базу"?

А по поводу
Может как-то можно узнавать, максимальное ли количество соединений набрано, и если да, тогда ждать пока кто-то отключится, и потом подключаться
и
может лучше самому закрывать соединение после выполнения скрипта?
что можешь сказать?
 

Фанат

oncle terrible
Команда форума
1. Судя по тому, что я не знаю что такое pconnect, смею сказать, что его нигде не использую.
ну, если все скрипты на сайте написаны тобой - тогда да.
2. Посещаемость сайта около 1500 посетителей в день.
то есть, , допустим, это 30 тысяч хитов. в пике может доходить до одного хита в секунду.
при такой нагрузке не должно быть превышений.
каков лимит на одновременные соединения?
сколько времени исполняется один скрипт?
есть ли доступ к консоли мускуля?
 

tend

Новичок
каков лимит на одновременные соединения?
500
сколько времени исполняется один скрипт?
вот этого не проверял, но думаю, что намного меньше секунды
есть ли доступ к консоли мускуля?
этим никогда не пользовался и не знаю об этом... может быть и есть, но почему-то кажется мне, что нет. Где об этом можно узнать? :)
 

Фанат

oncle terrible
Команда форума
СКОЛЬКО СКОЛЬКО?
500 одновременных соединений?
ты сам-то понимаешь, что никогда, никакая нагрузка такой лимит превысить не в состоянии?

я думаю, что дело не в нагрузке, а что-то с твоими скриптами.
 

MadMike

Новичок
Автор оригинала: Фанат 500 одновременных соединений?
ты сам-то понимаешь, что никогда, никакая нагрузка такой лимит превысить не в состоянии?
Ну ты же сам понимаешь, что это неправда. Превысить вполне можно и 500, и 1024 коннекта.
Хотя на виртуальном хостинге с 1500 хитами - конечно, хрен превысишь :))
 

tend

Новичок
СКОЛЬКО СКОЛЬКО?
500 одновременных соединений?
а почему такое удивление? может я не так понял? лимит на одновременные соединения и максимальное количество соединений - это одно одно и то же? если да, тогда все правильно - 500.

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

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

и еще раз насчет отключения соединения: оно само точно отключается после выполнения или нет? может быть в этом проблема?
 

tend

Новичок
а вот такой вопрос: на сервере же не только мой сайт, а еще куча других... максимальное количество подключений - это для всех или для каждого сайта?
 

tend

Новичок
Давай пока отложим эту тему и поговорим по делу. :)
Скорость проверял так: в начале php скрипта вставлял это:
list($msec,$sec)=explode(chr(32),microtime()); $mTimeStart=$sec+$msec;

а в конце скрипта вот это:
list($msec,$sec)=explode(chr(32),microtime()); $speed=(round(($sec+$msec)-$mTimeStart,4));

Т.е., если я правильно понимаю, как раз то, что мне нужно. Правильно?
Вот результаты: 0.0132, 0.0077, 0.0126, 0.0075, 0.0125 и т.д.
Самый большой (в течение минут 15-20) получился 0.6078.

Что ты можешь сказать по этому поводу?
Я и сам уже понимаю, что скорость выполнения скриптов тут тоже не при чем. Но вот в чем может быть причина ошибок не знаю. Помогай... :)
 

tend

Новичок
"это прекрасная скорость для скриптов" - это что означает? мне кажется ты не это хотел сказать
 

Фанат

oncle terrible
Команда форума
нет я хотел сказать ровно то, что сказал
при такой скорости и даже при ограничении в 5 одновременных коннектов, ошибки Too many connections быть не должно.
Хотя постой.
сколько коннектов у тебя производится в скрипте?
и ты не ответил на вопрос - есть ли чужие скрипты ?
 

tend

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

Фанат

oncle terrible
Команда форума
попробуй поискать, что означает твой номер ошибки - 11

-~{}~ 09.09.06 23:27:

А ты статистику ведёшь какую-нибудь? счётчик там, логи в базе?
 
Сверху