рабочие очень будни

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

Приходит письмо от пользователя: не открывается у меня одна из страниц на сайте. Жизненно необходимо ее открыть, потому что через нее делается один из важных шагов рабочего процесса. Без преувеличения, все так и есть страница важная. Иду смотреть:
1) Страница на моем компе открывается на ура
2) Сообщений о такой же или похожей ошибке от других пользователей нет (а их дофига, и народ постоянно пользуется сайтом).
3) Сообщений в логах об ошибках нет
4) И вообще, я эту систему разработала и знаю в ней все. В чем проблема?

Позвонила отрапортовавшей. Не грузится, говорит. Крутится и крутится, но не грузится. Ладно, открыли коннект к ее машине, смотрим. Да, не грузится и крутится. Страница-то грузится, а один из css-файлов – нет. На странице их несколько, все с того же сервера и из того же каталога. Эти – грузятся, тот – нет. Попробовали в другом browser’е – та же петрушка. В третьем – та же малина (а сколько вообще пищевых эпитетов есть?). Что добавляет таинственности – cURL, запущенный с терминала, вытянул файл моментально. Для другого пользователя на этой же машине проблемы нет, все грузится. Мистика. Мрак. Маразм.
В процессе решения проблемы был дан целый концерт для бубна без оркестра. Ансамбль бубнов был, с колокольчиками. Народ слева кричит “DNS! Это все DNS!” и перегружает его, хотя их никто не просил, да и какой к черту DNS, если весь остальной контент – оттуда же? Народ справа орёт “VPN! Это все VPN!” и открывает еще один – запасной – порт – хотя кто их просил, да и почему бы тогда работал cURL? Начальство многозначительно кивает и вспоминает, что вот был такой случай, да, но как его победили, они не помнят.
В процессе решения проблемы был потерт кэш, причем на всякий случай и для WebKit. Стерты known_hosts (а потому что идей уже нет). Проверены и перепроверены настройки сети. Настройки обновлены до умолчательных. Не хватало только святой воды, но варианта, передающегося по проводам пока не выпускают.
Через два с лишним часа я пошла шерстить логи на сервере. А вдруг этот зловредный пользователь чего-то не того сделал, и был навечно забанен, без моего участия?
Не знаю, что меня навело на мысль – видимо, размер ответа на запрос. Я вспомнила, что у нас часть контента жмется на уровне сервера – content deflating включен. Попытка не пытка – отключила пресс для css-файлов.
Работает.
Включила пресс.
Не работает.
(тут много нецензурных слов, я столько не знаю)
Итого. Конкретно для этого пользователя, конкретно на этой машине, конкретно этот ужатый файл выглядел неполным. Крутится и крутится – да, крутится, потому что ждет, когда же придет байтик (или два). А иначе-то разжать не получится, не сходятся концы с концами.
Решение: включить давилку назад и добавить несколько пустых строк в конец файла.

А теперь – бонус для особо въедливых. На сервере несколько виртуальных хостов, ссылающихся на один и тот же контент. Проблема была на сайте А. Сайт Б ссылается на ту же (физическую) копию файла, и жалась эта копия до того же размера (сейчас проверила), но вот с ним почему-то проблемы не было. Есть желающие объяснить, или пора приобретать лунный календарь?


Posted

in

by

Tags: