Arm1.ru

Ошибка Nginx Too many open files

Про ускорение. Пара полезностей.

Как известно, у браузеров ограничено число одновременных соединений на домен во время загрузки сайта. Таким образом элементы сайта грузятся последовательно. Каждая картинка/js/css-файл - отдельное соединение. Если таких элементов много на страницах сайта - то ускорить его загрузку можно, если вынести статику на поддомены. Например s1.domain.com, s2.domain.com и т.д. Таким образом, если в браузере у нас, скажем, лимит на 5 соединений на каждый домен - то теперь у нас будет по 5 соединений на каждый поддомен. Если грамотно всё раскидать, то теоретически скорость загрузки может вырасти чуть ли не в 5 раз.

Обратная сторона. Количество одновременных соединений с сервером также растёт. При той же посещаемости сайта - число соединений растёт примерно в 5 раз (при наличии 5 поддоменов). Если фронтендом стоит Nginx - то у него есть ограничение на число соединений в конфиге. А, поскольку соединений теперь в 5 раз больше, то и работы ему приходится одновременно проделывать больше, чем ранее. Таким образом с нашим ускорением мы также и приближаем Nginx к ограничению одновременных соединений, в результате у пользователя может не открываться сайт или какие-то файлы просто не отдаваться во время загрузки.

В логах Nginx будет ошибка:

"...socket() failed (24: Too many open files) while connecting to upstream..."

Посмотреть текущее ограничение из консоли:

ulimit -n

Посмотреть красиво в виде:

nginx: worker process

Limit                     Soft Limit           Hard Limit           Units
Max open files            1024                 1048576              files
Currently open files: 945

nginx: master process /usr/sbin/nginx
Limit                     Soft Limit           Hard Limit           Units
Max open files            1024                 1048576              files

можно, выполнив в консоли:

for pid in `pidof nginx`; do echo "$(< /proc/$pid/cmdline)"; egrep 'files|Limit' /proc/$pid/limits; echo "Currently open files: $(ls -1 /proc/$pid/fd | wc -l)"; echo; done

Изменить ограничение:

  • в /etc/security/limits.conf добавить строки:
    * soft nofile 16384
    * hard nofile 16384
  • от рута выполнить:
    ulimit -n 16384
  • рестарт Nginx, на всякий случай.

Пишут ещё, что можно просто прописать в конфиге Nginx:

worker_rlimit_nofile 16384

и перезапустить его.

comment comments

Полезная штука Prefix.pch

Открыл для себя полезную штуку в разработке под iOS - файл Prefix.pch - Precompiled Header.

Судя по описанию - Precompiled Headers компилируются, кэшируются и потом автоматически включаются в каждый компилируемый файл. Поэтому, если есть какой-то класс, который нужен везде или в почти везде в проекте - можно внутри Prefix.pch-файла, который автоматически создаётся в новом проекте, сделать include этого класса и он будет доступен везде. Мне вот совсем не нравилось в каждом View Controller'е снова и снова инклудить один класс, который нужен почти везде.

Читать далее...

comment comments

Итоги года 2011

Ну вот и настало время подвести итоги года дветысячиодиннадцатого. Хочу запомнить только хорошее, об этом и буду писать. Ну или не совсем о хорошем, но точно не о плохом. И, поскольку я часто что-то фоткал, я использую свои фотографии. Пост получился огромным, но это из-за фоток.

Читать далее...

comment comments

Увеличение громкости iPhone 4

Увеличение громкости iPhone 4

У меня iPhone 4 из Франции. В телефонах для продажи во Франции Apple обязали ограничить громкость звука в наушниках, мол, заботятся о своих гражданах и не хотят, чтобы они глохли. Мне, в условиях метро, громкости в итоге не хватает, к тому же наушники бывают разные, какие-то играют громче, у каких-то сопротивление другое и они играют тише.

В общем это ограничение можно обойти. Для этого нужно сделать Jailbreak, после чего получить доступ к файловой системе и изменить пару plist-файлов. Вариантов много - от установки какого-нибудь Терминала через Cydia, до монтирования телефона как раздела на компе. Мне больше нравится второй вариант - поставил Phone Disk - он подключил мой телефон как раздел, а дальше надо пошариться по файловой системе.

Читать далее...

comment comments

AllCafe для iPhone 1.1.2

AllCafe для iPhone

Выпустили мелкое обновление AllCafe для iPhone. Основные изменений - поддержка iPhone 3G (то бишь поддержка всей 4-й ветки iOS) и сжатие фотографий при добавлении отзывов на клиенте. К тому же теперь они загружаются в правильной ориентации (вертикальной или горизонтальной).

Что приятно - заапрувили всего лишь за сутки обновление. Похоже ревьюверы работают в ускоренном режиме сейчас - с 22 декабря по 29 декабря даже iTunes Connect будет закрыт на праздники.

comment comments

Видео Traveling

В эти выходные подруга позвала помочь на студию снять ролик для их проекта по учёбе. Тема - путешествия. Это что-то вроде промо-ролика к их выставке. Изначальная идея не удалась, в итоге просто снимали то, что было. Результат получился очень забавный и смешной, и музыку выбрали по моей подсказке. Надо больше снимать. Результат:

Оператор: Sergey Armodin
Монтаж и обработка видео Nadia Silver и Kira Kornienko
Музыка: Clint Mansell (OST Moon)

comment comments