Новости из Блогов WHM/cPanel: There are no databases associated with your account

Discussion in 'Мировые новости. Обсуждения.' started by zeks1, 23 Apr 2013.

  1. zeks1

    zeks1 New Member

    Joined:
    11 Jan 2013
    Messages:
    73
    Likes Received:
    0
    Reputations:
    1
    WHM/cPanel: There are no databases associated with your account

    понедельник, 22 апреля 2013 г.
    http://blog.tataranovich.com/2013/04/whmcpanel-there-are-no-databases.html


    Столкнулся с тем, что для некоторых пользователей в cPanel в разделе "MySQL Databases" стало долго думать, а затем выдавать ошибку "There are no databases associated with your account.".

    Гугл выдает аналогичные проблемы и много вариантов решений, но мне ни одно не помогло. Базы видны в phpMyAdmin, но в cPanel с ними работать не удается.

    Пока дебажил, заметил в процессах такую связку

    Code:
    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, то смотрю список активных запросов

    Code:
    ...
    select TABLE_SCHEMA as DB,SUM(DATA_LENGTH)+SUM(INDEX_LENGTH) AS SPACEUSED from information_schema.ta
    ...
    А вот и любопытный запрос - если его прибить, то cPanel сразу покажет ошибку. Похоже это срабатывает подсчет занимаемого дискового пространства базами пользователей, и для тех пользователей, кто использует много-гигабайтные базы этот скрипт не отрабатывает как следует.

    Если несколько раз обновить страницу, то становится заметно, что ошибка появляется примерно через 2 минуты. Начинаю смотреть код скрипта и в первых строках нахожу причину

    Code:
    29 
    30 $SIG{'ALRM'} = sub { die "Timeout: Alarm"; };
    31 
    32 alarm 120;
    33 
    Получается, что скрипт взводит "будильник" на 2 минуты и именно он мешает скрипту выполниться до конца. Меняю в 30 строке alarm 120 на alarm 300.

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