Сайт не работает с MySQL во время выполнения скрипта, записывающего в базу MySQL. Как исправить?

Есть чужой скрип, загружающий данные в интернет-магазин из локального xml-файла. Всё работает на VPS с BitrixVM 7.5 (nginx, apache, mysql 5.7.35-38, php 5.6, 2 ядра, 2 гига) Сайт в целом летает.

Но есть проблема: во время работы того скрипта вообще не открываются страницы сайта.

Но в тоже время:

  • На сайте быстро открывает статика через nginx
  • Быстро работают файлы php, не использующие базу данных (phpinfo моментально выводится)

Результаты моих исследований:

  • Команда mysql SHOW PROCESSLIST; показывает, что висит один процесс. Но если его убить, то страницы сайта всё равно не отрываются.

  • Перезагрузка mysqld не помогает - страницы сайта не открываются.

  • После перезапуска mysqld apache начинает загружать процессор на 25%. И невозможно выполнить service httpd restart - висит. Но если сделать kill процесса с apache, то всё сразу отвисает (и не надо трогать mysqld).

  • По совету коллеги я посмотрел нагрузку на диск с помощью iotop -oka Этот показатель в среднем колеблется от 500 до 3000 K/s, очень редко поднимается на секунду до 6000 К/s

  • Действующие переменные MySQL в pastebin: https://pastebin.com/VYE02kXj

Автор скрипта сказал, что нужно настраивать хостинг. Но не дал конкретных инструкций.

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

Куратор тега MySQL в аналогичном русскоязычном сервисе тоже считает, что дело в "лочках". И считает это интересной и обширной темой. Спасибо ему за это.

Подскажите, пожалуйста, можно ли настроить MySQL, чтобы наполнение сайта скриптом не блокировало его работу?


Ответы (0 шт):