Отдел поддержки клиентских серверов датацентра. Приходит клиентское письмо с жалобой: «После обновлений базы товаров нашего интернет-магазина сайт перестаёт работать и вообще». Сайт вольготно размещён в одиночку на сервере с двухъядерным процессором и 2 ГБ памяти — проблем с производительностью быть не должно. Прошу пнуть нас именно в момент обновлений.

 

Дожидаюсь ответа «вот сейчас не работает!» Смотрю — на машине оба ядра под завязку нагрузил MySQL. Логинюсь в «мускуль», даю запрос show full processlist. Изумляюсь — терминал виснет наглухо. Передёрнув терминал и залогинившись обратно на машину, запускаю тот же запрос с выводом в файл. Смотрю в результаты: сервер отрабатывает два запроса общей длиной в 1,2 с копейками мегабайта.

 

Как выяснилось, чудо-фронтэнд магазина выгребал какие-то данные запросом вида «Select * from Таблица where productID='такой-то' and enabled=1 or productID='еще_какойто' and enabled=1 or...», и так до упора. Несчастный MySQL вдумчиво проверял каждую строку немаленькой таблицы на соответствие десяткам тысяч логических условий.

 

Клиенту отписал, приложив результаты show full processlist. Молчит уже сутки. Видимо, проникается идеей...

 

 

 

#1637: Краткость — тёща бизнеса

12:00 10.12.2009, IT happens

 

Работаю уже некоторое время в одной из самых раскрученных в нашем небольшом городе дизайн-студии. В основном мы делаем сайты для крупных предприятий — ценник, соответственно, рассчитан на обширный корпоративный бюджет.

 

Не так давно находит нас один клиент — хочет срочно себе сайт. Какие проблемы? На встречу устремляемся сокращённым составом «ударной команды»: рекламщик и техдиректор.

 

Приезжаем на какую-то торговую базу. Стоит небольшое гаражеподобное строение, над входом безвкусная жёлто-синяя надпись «Ковролин». Заходим и видим этакого качка в спортивной одежде, читающего газету. Представляемся, начинаем по стандарной схеме:



28 из 75