Гугл выдает аналогичные проблемы и много вариантов решений, но мне ни одно не помогло. Базы видны в phpMyAdmin, но в cPanel с ними работать не удается.
Пока дебажил, заметил в процессах такую связку
cpsrvd (SSL) - waiting for c --llu=1366639891 --listen=3,4,5,6,7,8 \_ cpaneld - serving 117.65.29 --llu=1366639891 --listen=3,4,5,6,7,8 \_ /usr/local/cpanel/cpanel ./frontend/x3/sql/index.html \_ /usr/local/cpanel/bin/cpmysqlwrap \_ /usr/local/cpanel/3rdparty/bin/perl /usr/local/cpanel/bin/cpmysqladmin
Если подключиться к последнему процессу через strace, то видно что он ожидает на вызове read. Поскольку название скрипта намекает на связь с mysql, то смотрю список активных запросов
... select TABLE_SCHEMA as DB,SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) AS SPACEUSED from information_schema.ta ...
А вот и любопытный запрос - если его прибить, то cPanel сразу покажет ошибку. Похоже это срабатывает подсчет занимаемого дискового пространства базами пользователей, и для тех пользователей, кто использует много-гигабайтные базы этот скрипт не отрабатывает как следует.
Если несколько раз обновить страницу, то становится заметно, что ошибка появляется примерно через 2 минуты. Начинаю смотреть код скрипта и в первых строках нахожу причину
29 30 $SIG{'ALRM'} = sub { die "Timeout: Alarm"; }; 31 32 alarm 120; 33
Получается, что скрипт взводит "будильник" на 2 минуты и именно он мешает скрипту выполниться до конца. Меняю в 30 строке
alarm 120
на alarm 300
.Теперь показ списка баз работает без ошибок. Правда непонятно, что делать с обновлениями cPanel, но этой проблемой займусь, когда она возникнет.
Комментариев нет:
Отправить комментарий