crower: (Crower)
[personal profile] crower
Наступил на грабли.
Началось с того что заглянув в кактус обнаружил, что на одном серваке поселились лангольеры. Точнее, не поселились, а появляются набегами, регулярно. Да, да, такие круглые летающие штучки с тремя зубастыми челюстями, которые пожирают время. :)
Вот и тут раз в час потребление процессорного времени подскакивает до 50%.
Было бы больше, но похоже на нераспараллеливающийся процесс, который пожирает время только одного из двух ядер.
И растягивается сей процесс минуты на две с четвертью.
После чего лангольеры исчезают бесследно.

Была мысль что это загрузка веб-клиентом прожорливой задачи, но скоро отпала потому как авторефреша в ней нет (хотя браузеру-то никто не указ) и логи ничего не кажут.

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

К их ближайшему появлению приготовился: top для отслеживания (началось!).
Наступает время и что я вижу? mysql!
Блин! Но как узнать кто и что именно делает в это время? ps? netstat?
За время набега выяснить не успел, но приготовился к следующему: запустил mysql с приготовленным show processlist.
По крайней мере это-то должно более точно показать что именно происходит.

Оказывается лангольеров породила нестыков с кодировками. Запускается процесс, который загружает кучу записей. В каждой ссылка на файл (его имя). Но имя длинное и с целью нормализации оно выводится в отдельную таблицу, а процедура, которая эту запись сохраняет, вместо имени файла сохраняет в записи айдишиник, указывающий на файл. И таблица не большая - несколько десятков тысяч записей. Но фишка в чём?
Вот так: "select id from table where field=input_param.." это выглядит в коде, а вот так "select id from table where field=NAME_CONST('input_param', _utf8'значение'.." отображается в show processlist.
Откуда подчёркнутая хрень взялась?
В общем, пытался я оптимизить таблицы. Имена файлов там латиницей. Хотел на латиницу заменить юникод (utf8). Чтобы меньше места и быстрее. Ага. А получил на пару порядков дольше. То ли из процедуры с переключением кодировок кэш не работает, то ли с клиентом кодировка не сошлась, то ли ещё что-то - разбираться было некогда. Вернул utf8 и колючки не кактусе даже не заметно.

Так что не всё так просто.
This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

crower: (Default)
crower

February 2018

S M T W T F S
    123
45678910
11121314151617
181920212223 24
25262728   

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 28th, 2026 02:16 am
Powered by Dreamwidth Studios