Перейти к публикации
IPS Invision Community

Ускорить сохранение "отправку" сообщений на форум.


Ryancoolround
 Поделиться

Рекомендованные сообщения

Недавно с моим форумом произошла штуковина. Он переставал открываться. Выдавал либо 500 ошибку, либо 503 ошибку.

Вскоре я узнал, что эти ошибки вызываются из-за этого:

Can't create more than max_prepared_stmt_count statements (current value: 16382) (1461)

Я долго копался, параметр max_prepared_stmt_count ограничивает максимальное количество подготовленных операторов, которые могут одновременно существовать в mysql на уровне сервера. Каждый раз, когда вы хотите создать новый подготовленный оператор, mysql сначала проверяет этот предел, и если сервер mysql имеет слишком много подготовленных операторов, то он блокирует новые с сообщением об ошибке.

Ну я обратился к технической поддержке. Сначала они меня тыкали носом в мои же логи, и кричали, вот, вы спамите ошибкой, и еще говорите что вы тут не причем. Ну в общем, все как всегда. Я плохой, они Д'Артаньяны.

Я объяснил технической поддержке немного, как работает max_prepared_stmt_count (Дожили, Я ОБЪЯСНЯЮ ЧТО ТО ТЕХНИЧЕСКОЙ ПОДДЕРЖКЕ, это как то не профессионально) и пошел искать место, где я могу арендовать отдельную базу данных.

@Sipsb скинул мне свою реферальную ссылку, заверив меня, что там все хорошо. Ну я не долго думая, закинул туда денег, и начал работать с новой базой данных.

Очень удобно кстати, ты закинул любую сумму. Арендовал базу, и списания идут почасово. То есть для экспериментов, хостинг, который рекламирует этот форум, подходит идеально.

Благодаря тому, что я арендовал облачную базу данных у другого хостинга. В данный момент работает все на приемлемом уровне.

Помимо этого, после жалобы моему основному провайдеру услуг, они прислали мне письмо, в котором заверили меня, что они увеличили параметр max_prepared_stmt_count. И хоть моя база данных уже не у них, все же, другим около 400 сайтов на одном IP, возможно это поможет в будущем.

Теперь другой вопрос. Он вылез как раз таки из этой истории, поэтому я и начал так издалека.

Теперь при нажатии на кнопку отправить, посты сохраняться могут до восьми секунд. Так же в ACP проверка базы данных тоже затягивается на достаточно долгое время:

Спойлер

image.png.7b56ced1204e4e63cc5d43fa0ccf94a8.png

Я уже пытался:

  • Взять повыше тариф, где CPU и RAM выше.
  • Пытался использовать разные версии MySQL
  • Пытался использовать таблицы формата MyISAM и InnoDB.
  • Пытался использовать аналогичную "сборку", MySQL, как и у старого провайдера услуг.

У меня есть предположение, что это случается из-за того, что сайт стоит на одном хостинге, а база данных на другом. Если это действительно из-за этого, то тут ничего не сделать.

А если я ошибаюсь? Дайте еще парочку советов пожалуйста.

  • Нравится 2
Ссылка на комментарий
Поделиться на других сайтах

4 часа назад, Ryancoolround сказал:

Пытался использовать таблицы формата MyISAM и InnoDB.

IPS рекомендует использовать InnoDB 

В остальном нужно тестировать, проверять индивидуально. Я могу посмотреть, если предоставите доступ в ЛС, но не сегодня.

  • Нравится 1
Ссылка на комментарий
Поделиться на других сайтах

14 минут назад, Sipsb сказал:

Я могу посмотреть, если предоставите доступ в ЛС, но не сегодня.

Хорошо, напомните мне, как у вас появится время.

Так же я с радостью почитаю советы других пользователей.

Ссылка на комментарий
Поделиться на других сайтах

Проблема в хостинге :dada: нужно переходить на vds или на выделенный сервер, но это дорого. В 80-90% что проблема исчезнет.

Ссылка на комментарий
Поделиться на других сайтах

Мы тоже по рекомендации @Sipsb переехали на VDS сервер таймвеба работает шикарно.

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

@Quit Всё будет работать, как положено. :dada:

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

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

При использовании облачных баз вам не нужно устанавливать и поддерживать оборудование, настраивать ПО и администрировать сложные хранилища.

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

Преимущества услуги

  • Быстрая обработка запросов любой сложности.
  • Оптимизация процессов разработки и тестирования.
  • Простое масштабирование.
  • Снижение расходов на поддержку инфраструктуры.
  • Производительность и безопасность.
  • Нравится 2
  • Спасибо 1
Ссылка на комментарий
Поделиться на других сайтах

Получается, что можно взять дешёвый хостинг + облачную базу всё будет летать?

Ссылка на комментарий
Поделиться на других сайтах

@tweak soft :nini: так не прокатит у дешёвого хоста нет нормальных ресурсов.

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Похожие публикации

    • qwert
      Автор: qwert
      Вы создали таблицы в phpMyAdmin и наполнили их данными, а в ответ отображается «абракадабра»? Дело в неправильно указанной кодировке. Для того чтобы данные отображались корректно, нужно изменить параметр кодировки для каждой таблицы.
      В базе данных могут быть сотни таблиц, поэтому воспользуйтесь следующим решением для оперативной смены кодировок :
      Войдите в phpMyAdmin и выберите необходимую базу данных из списка, просто кликнув по её названию Перейдите в раздел SQL Скопируйте запрос, вставьте его в окно запроса MySQL и запустите, нажав ОК SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;') as sqlcode FROM `information_schema`.`TABLES` t WHERE 1 AND t.`TABLE_SCHEMA` = 'имя_базы' ORDER BY 1 CONVERT TO CHARACTER — кодировка, которую нужно применить;
      COLLATE — текущая кодировка базы данных (отображается в колонке «Сравнение»);
      AND t. TABLE_SCHEMA = '…' — имя базы данных;
      В качестве ответа будет дан список запросов для смены кодировки каждой таблицы. Ответ предоставляется в виде:
      Чтобы корректно выполнить запросы, раскройте вкладку Параметры, установите чекбокс напротив пункта Полные тексты и нажмите ОК: Скопируйте запросы, кликните по вкладке SQL, вставьте их в окно запроса MySQL и нажмите ОК: Готово. Кодировка во всех таблицах базы данных изменится.
×
×
  • Создать...
Вверх
Вверх