arm1.ru

Пара мыслей о выступлении Павла Дурова на DLD 2012

event Jan 24, 2012 at 16:42

Павел Дуров на DLD 2012

Сегодня на 3-м дне конференции DLD 2012 (Digital, Life, Design). Пара мыслей, просто, чтобы порассуждать.

Ошибка Nginx Too many open files

event Jan 20, 2012 at 17:15

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

Как известно, у браузеров ограничено число одновременных соединений на домен во время загрузки сайта. Таким образом элементы сайта грузятся последовательно. Каждая картинка/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

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

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

event Jan 13, 2012 at 14:10

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

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

Итоги года 2011

event Dec 30, 2011 at 00:54

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

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

event Dec 27, 2011 at 13:45

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

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

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

AllCafe для iPhone 1.1.2

event Dec 21, 2011 at 13:34

AllCafe для iPhone

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

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