[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Постоянно падает MySQL на хостинге.
Dima85
У меня Business Cloud Web Hosting на uk2.net

Установлена самодельная CMS. На сайте постоянно находится 10-30 человек. Посещение около 500 в сутки.

Практически каждый день на 10-20 минут вылетает MySQL ошибка:
*Warning*: mysql_connect(): Connection refused
in /home/maxi/public_html/src/base.php* on line *18*
Error MySQL: Connection refused


файл: error_log:
***
[21-Jul-2015 13:47:00 UTC] PHP Warning: mysql_connect(): Connection refused in /home/maxi/public_html/src/base.php on line 18
[21-Jul-2015 13:48:00 UTC] PHP Warning: mysql_connect(): Connection refused in /home/maxi/public_html/src/base.php on line 18
[21-Jul-2015 13:49:00 UTC] PHP Warning: mysql_connect(): Connection refused in /home/maxi/public_html/src/base.php on line 18
[21-Jul-2015 13:50:00 UTC] PHP Warning: mysql_connect(): Connection refused in /home/maxi/public_html/src/base.php on line 18
[21-Jul-2015 13:51:00 UTC] PHP Warning: mysql_connect(): Connection refused in /home/maxi/public_html/src/base.php on line 18
***


18 строчка из файла это:
mysql_connect($dbhost, $dbuser, $dbpass) or die("Error MySQL");
mysql_select_db($dbname) or die("Error MySQL");


В то время когда вылетает эта ошибка я не могу зайти даже на phpmyadmin, пишет ошибка коннекта.

С теж. поддержки пишут мол на MySQL идет большая нагрузка. Но как-то это не естественно. 10-30 человек разве могут дать большую нагрузку? К тому же у меня не простой хостинг а Business Cloud Web Hosting.

Не знаю что мне делать. Посоветуйте пожалуйста что ни будь.
Valick
Цитата (Dima85 @ 22.07.2015 - 09:59)
10-30 человек разве могут дать большую нагрузку?

если программист гениален, то и один человек может уронить сервер, не то что 10-30

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

_____________
Стимулятор ~yoomoney - 41001303250491
Dima85
Всяческие поиски по базе в них участвуют все таблицы, например:
$rows = mysql_query("SELECT * FROM `users` WHERE `Username`='$username' LIMIT 1");

или
$rows = mysql_query("SELECT * FROM `users` WHERE `city`='$city'");


Если указывать вместо * именно нужные таблицы. Как сильно это разгрузит хостинг? Всего около 12 таблиц в 'users'.
Valick
не таблиц, а полей, и большой роли это не сыграет
другое дело данного вида запрос наводит на мысль, что запросы у вас в цикле (интуиция)

_____________
Стимулятор ~yoomoney - 41001303250491
Dima85
Большинство запросов выводятся так:
$result=mysql_fetch_assoc($rows);
- это когда необходимо найти 1 запись.

Или же в цикле, так:

while($result= mysql_fetch_assoc($rows)){ }
- Когда необходимо вывести несколько результатов.

Что-то из этого можно оптимизировать?
inpost
Dima85
mysql_error(); и смотри код ошибки.
Дальше, как База Данных восстанавливается? Сам поднимаешь?
Самый простой трюк заглянуть в slow_queries, установи на 1-2 секунды и посмотри. Если подобные запросы имеют место быть, то надо исправлять.
Второй ошибкой может быть чрезмерное количество запросов, то есть где-то есть цикл большой, а внутри него идут запросы. Нужен рефакторинг.
И последнее, когда ты пишешь:
$result=mysql_fetch_assoc($rows);

Ты хоть 1 запись достаёшь, или ты гоняешь ВСЕ(!) записи в больших таблицах?
Ах да, чуть не забыл, ещё могут какой-нибудь бот запустить на несколько тысяч запросов в минуту, тоже создаст хорошенькую нагрузку. Поставь мини-счётчик на IP+количество страниц в минуту. Будет видна проблема.

И, последнее, это не VDS какой-нибудь на 512mb памяти? Если да, то смотри логи Киллера.

_____________
Обучаю веб-программированию качественно и не дорого: http://school-php.com
Фрилансер, принимаю заказы: PHP, JS, AS (видео-чаты). Писать в ЛС (Личные сообщения на phpforum).
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.