Превышено допустимое количество запросов

  • 16 Ответов
  • 952 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

*

Оффлайн Bat9l

Доброе время суток.
На некоторых хостингах администраторы устанавливают ограничение на максимальное количество запросов к базе данных в час. При превышении этого значения выдается сообщение об ошибке вида: User 'имя_пользователя' has exceeded the 'max_questions' resource (current value: 90000), где 90000 это и есть максимальное количество запросов.
Я нашел статью в интернети как решить это но она не работает вот пример:
Итак, приступим:

  1)  Идем в панель управления хостингом (CPanel, DirectAdmin, vDeck и т.д.). И создаем 2-5 пользователей для вашей базы данных с теми же правами и паролем, что и у основного пользователя базы данных вашего сайта. После создания пользователей обязательно дайте им привелегии для доступа к базе данных вашего сайта — они должны быть полными копиями основного пользователя. Допустим мы создали 3-х дополнительных пользователей: user1, user2 и user3.
    Открываем в любом редакторе конфигурационный файл configuration.php и находим в нем переменные с логином пользователя базы данных:
    1.$mosConfig_user = 'user';
    Заменяем эту строчку на следующий код:
    1.$mosConfig_users = array("user", "user1", "user2", "user3");
    2.$mosConfig_user = $mosConfig_users[array_rand($mosConfig_users)];
    Сохраняем изменения в файле configuration.php.
Но в configuration.php. немного не так как в примере.

Вот что пробую я но не получается все Неправильно.
public $dbtype = 'mysqli';
public $host = 'localhost';
public    $users = array("user", "user1", "user2", "user3");
public        $user = $users[array_rand($users)];

public $password = '123';
Кто знает как это сделать буду благодарин очень!


*

Оффлайн AlekVolsk

Цитировать
public    $users = array("user", "user1", "user2", "user3");
public        $user = $users[array_rand($users)];
Это не сработает, J это не поймет. Надо серьезно допиливать ядро и предлагать pull request, но шансы на это практически никакие.

*

Оффлайн Bat9l

Может кто то уже побывал, сталкивался так сказать, может есть решенная уже эта проблема, должна ведь быть оптимизация версия уже j 3....

*

Оффлайн AlekVolsk

О, от версии J это не зависит, как и от самой J. Зато от вас зависит, каким именно хостером обслуживать ваши сайты, и текущий выбор - однозначно неудачен.
А еще можно покапаться и оптимизировать код, который создает такое кол-во запросов.
Кстати, посещаемость юников сколько?

*

Оффлайн Bat9l

О, от версии J это не зависит, как и от самой J. Зато от вас зависит, каким именно хостером обслуживать ваши сайты, и текущий выбор - однозначно неудачен.
А еще можно покапаться и оптимизировать код, который создает такое кол-во запросов.
Кстати, посещаемость юников сколько?

Да хостер больше не дает как 90000, плачет что их сервак умрет)))) у меня на нем 4 под домена 4 бд, в среднем посещаемость 300-500, когда стал расти до 1000 и выше сайт тормазил потом вешалсяи вот ошибка, временами только успевал чистить сессию в ручную чистил бд, помогало, но пользователи наверное уставали от бесконечного лагаута, компоненты конечно не оптимизировал плагины не трогал так немного касеков исправлял после обнов, но все работало устойчиво пока пользователей не стало больше... 

*

Оффлайн AlekVolsk

У, батенька. да вам не просто менять его надо, а бежать от него без оглядки, желательно с приобретением vds, раз уж там у вас столько всего.

1. создаем 3 пользователей для доступа к нашей БД с одинаковыми правами и одним и тем же паролем.
пример: myuser1, myuser2, myuser3
2. В файле configuration.php
комментируем код
/*public $user = 'myuser';*/

myuser -  здесь имя пользователя БД

3. в файле /libraries/joomla/factory.php
заменяем строку
$user = $conf->get('user');
на строки
$users = array("myuser1", "myuser2", "myuser3");
$user = $users [array_rand($users)];

Все приятного использования


*

Онлайн vitzer

1. создаем 3 пользователей для доступа к нашей БД с одинаковыми правами и одним и тем же паролем.
пример: myuser1, myuser2, myuser3
2. В файле configuration.php
комментируем код
/*public $user = 'myuser';*/

myuser -  здесь имя пользователя БД

3. в файле /libraries/joomla/factory.php
заменяем строку
$user = $conf->get('user');
на строки
$users = array("myuser1", "myuser2", "myuser3");
$user = $users [array_rand($users)];

Все приятного использования


Что это дает?

Что это дает?
мы уходим от ошибки User 'имя_пользователя' has exceeded the 'max_questions' resource (current value: 90000)
т.е. для подключения к БД у нас произвольно берется пользователь  myuser1, myuser2, myuser3
соответственно возникновение ошибки описанной топик стартером уменьшается в 3 раза.
Но все зависит. от того скольких пользователей БД разрешает завести хостер, мой разрешает 1000 ;-)

мы уходим от ошибки User 'имя_пользователя' has exceeded the 'max_questions' resource (current value: 90000)
т.е. для подключения к БД у нас произвольно берется пользователь  myuser1, myuser2, myuser3
соответственно возникновение ошибки описанной топик стартером уменьшается в 3 раза.
Но все зависит. от того скольких пользователей БД разрешает завести хостер, мой разрешает 1000 ;-)
или же другими словами мы распределяем нагрузку на базу между пользователями БД, а это если не ошибаюсь очень актуально при работе с базами где тип таблиц MyISAM - хотя я могу в этом утверждении и ошибаться

*

Оффлайн voland

  • ********
  • 9334
  • [+]520 / [-]101
  • СКАЙП утерян! Пишите в телеграм @volandku
    • Просмотр профиля
    • webstudio.pro

Ну и бред!
спасибо и вам хорошего дня
но проблема имеет место быть и на данном этапе есть предложенное решение

*

Онлайн ChaosHead

Мне кажется вам просто кэширование надо настроить и количество запросов снизится. Что там там у вас запрашивается 90000 раз в час, не одно и то-же ли?
« Последнее редактирование: 01.03.2017, 11:04:52 от ChaosHead »

Мнимый уход от проблем, надо сайт оптимизировать, а не городить кучу бд.

Мне кажется вам просто кэширование надо настроить и количество запросов снизится. Что там там у вас запрашивается 90000 раз в час, не одно и то-же ли?
Насчет кэширования полностью с Вами согласен, но не всегда это удается сделать, особенно когда имеется гремучая смесь Joomla и VirtueMart и в VirtueMart сидит более 2000 товара с изменяемыми доп характеристиками, фильтрами и т.п. Из всех протестированных способов ни один не дал приемлемого результата. И на данном этапе пока продолжаются поиски, такое решение является заплаткой обеспечивающей работоспособность сайта.
« Последнее редактирование: 08.03.2017, 13:59:50 от insaider_kr »

*

Оффлайн SmokerMan

странная проблема, логичнее было бы поменять хостинг и не изобретать велосипед
можно попробовать переключать через системный плагин
$config = JFactory::getConfig();
$config->set('user', 'username');
но опять же надо знать в какой момент переключать)