22 апреля 2013

WHM/cPanel: There are no databases associated with your account

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

Гугл выдает аналогичные проблемы и много вариантов решений, но мне ни одно не помогло. Базы видны в 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, но этой проблемой займусь, когда она возникнет.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

16 апреля 2013

Wine 1.5.28 for Debian Squeeze/Wheezy

Done with packaging Wine 1.5.28 for Debian Squeeze (i386, amd64) and Debian Wheezy (i386 only). Changelog for the new release. Binary packages can be installed via my repository.

Multi-arch support for Wheezy still not fixed.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

06 апреля 2013

Переключение SATA в режим AHCI на ASUS EeePC 1000H


Чтобы получить максимум производительности от использования SSD диска в своем нетбуке ASUS EeePC 1000H мне пришлось поискать модифицированный BIOS, где есть поддержка этого режима. AHCI нужен для использования команды TRIM (по-умолчанию в 1000H sata порт работает в режиме эмуляции IDE и изменить это нельзя).

Поиски в гугле привели меня в ветку форума сайта bios-mods.com, где добрые люди выложили модифицированный BIOS для EeePC 1000H. На форуме можно скачать несколько модификаций этого BIOS, самая базовая из них только меняет OEM лого и включает опции настройки режима порта SATA. Я брал вариант ASUS 1000H ACPI BIOS Revision 2204GT (AHCI). На всякий случай я сделал зеркало этого файла у себя: 1000H-ASUS-2204GT-01.RAR

Для обновления BIOS нужна флешка, отформатированная в FAT32 (я использовал свою старую на 512MB). В архиве есть файл1000H-ASUS-2204GT-01.ROM, его нужно скопировать в корень вашей флешки и переименовать в 1000H.ROM. После этого перезагрузить нетбук и нажать Alt+F2 в момент прохождение POST - начнется процесс обновления BIOS (каждый раз, когда меняю прошивку в железе на мгновение замирает сердце, пока бежит прогрессбар).

После завершения прошивку нужно выключить нетбук и включить заново. При включении он пожалуется на неверную контрольную сумму и предложит либо продолжить загрузку (нужно нажать F2), либо зайти в BIOS и настроить параметры (нужно нажать F1). Я выбрал последний вариант.

Зайдя во вкладку "Advanced" в категории "IDE Configuration", задаю значение параметра "ATA/IDE Configuration" равным "Enhaced".

После этого активируется параметр "Configure SATA as" - его значение нужно выставить в "AHCI".

После сохранения параметров и перезагрузки SATA работал уже в режиме AHCI.

UPDATE: После установки старого жесткого диска появилась пауза при перезагрузке (примерно 30 секунд). При выключении такой паузы нет. Если SATA в режиме AHCI и установлен SSD диск, то паузы нет, а если установлен жесткий диск - пауза есть. Решается переключением SATA порта в режим эмуляции IDE.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

03 апреля 2013

Наглядное пособие по работе garbage collector в SSD дисках

Хорошая картинка для понимания работы SSD диска. Наглядно показано что такое page и erase block и как работает garbage collector.



Взято отсюда.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

02 апреля 2013

Оптимизация дисковой подсистемы

В процессе апгрейда дискового массива одного из серверов я решил применить пару оптимизаций, которые на мой взгляд могут дать прирост производительности дисковой подсистемы.

Сперва добавил битмап к raid - это даст возможность быстрее восстановить raid массив после сбоя, поскольку будут синхронизироваться только занятые блоки, которые помечены в битмапе как используемые.

# mdadm -C /dev/md3 -b internal -c 64 -l 5 -n 4 /dev/sd[e-h]2

Размер чанка (chunk) нового массива равен 64k, теперь нужно создать группу томов на новом массиве используя выравнивание по размеру чанка.

# pvcreate -M2 --dataalignment 64k /dev/md3

Осталось переместить данные со старого raid массива на новый

# vgextend vg00 /dev/md3
# pvmove /dev/md1
# vgreduce vg00 /dev/md1

Ссылки
1 http://wiki.tldp.org/LVM-on-RAID
2 https://raid.wiki.kernel.org/index.php/RAID_setup

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

30 марта 2013

Wine 1.5.27 для Debian Squeeze/Wheezy

Собрал в пакеты Wine 1.5.27 для Debian Squeeze (i386, amd64) и Debian Wheezy (i386). Анонс новой версии тут. Установить можно из моего репозитария.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

29 марта 2013

session.save_handler = eaccelerator в PHP

Если у вас в свежем eaccelerator (проверял на 0.9.6) не регистрируется хендлер в PHP сессиях, то поможет откат на версию 0.9.5.x.

$ wget --no-check-certificate https://github.com/eaccelerator/eaccelerator/archive/0.9.5.zip -O eaccelerator-0.9.5.zip
$ unzip eaccelerator-0.9.5.zip
$ cd eaccelerator-0.9.5
$ phpize
$ ./configure --enable-eaccelerator=shared --without-eaccelerator-encoder --without-eaccelerator-loader --with-eaccelerator-shared-memory --with-eaccelerator-content-caching --with-eaccelerator-sessions
$ make
$ make install

Я не в курсе почему нет сессий в новой версии - в ChangeLog ничего не видно на этот счет.

UPDATE: В процессе тестирования на простом примере сессия работала

<?php
ini_set('session.save_handler', 'eaccelerator');
session_start();
if (isset($_SESSION['test'])) {
        echo "Stored value: " . $_SESSION['test'];
} else {
        echo "Storing session information";
        $_SESSION['test'] = 'Eaccelerator';
}

Но при тестировании на маджентовском сайте перестает работать сессия - похоже поддержку убрали не просто так.

Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.