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

Сегодня на 3-м дне конференции DLD 2012 (Digital, Life, Design). Пара мыслей, просто, чтобы порассуждать.
Ошибка 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
и перезапустить его.
Полезная штука Prefix.pch
Открыл для себя полезную штуку в разработке под iOS - файл Prefix.pch - Precompiled Header.
Судя по описанию - Precompiled Headers компилируются, кэшируются и потом автоматически включаются в каждый компилируемый файл. Поэтому, если есть какой-то класс, который нужен везде или в почти везде в проекте - можно внутри Prefix.pch-файла, который автоматически создаётся в новом проекте, сделать include этого класса и он будет доступен везде. Мне вот совсем не нравилось в каждом View Controller'е снова и снова инклудить один класс, который нужен почти везде.
Итоги года 2011
Ну вот и настало время подвести итоги года дветысячиодиннадцатого. Хочу запомнить только хорошее, об этом и буду писать. Ну или не совсем о хорошем, но точно не о плохом. И, поскольку я часто что-то фоткал, я использую свои фотографии. Пост получился огромным, но это из-за фоток.
Увеличение громкости iPhone 4

У меня iPhone 4 из Франции. В телефонах для продажи во Франции Apple обязали ограничить громкость звука в наушниках, мол, заботятся о своих гражданах и не хотят, чтобы они глохли. Мне, в условиях метро, громкости в итоге не хватает, к тому же наушники бывают разные, какие-то играют громче, у каких-то сопротивление другое и они играют тише.
В общем это ограничение можно обойти. Для этого нужно сделать Jailbreak, после чего получить доступ к файловой системе и изменить пару plist-файлов. Вариантов много - от установки какого-нибудь Терминала через Cydia, до монтирования телефона как раздела на компе. Мне больше нравится второй вариант - поставил Phone Disk - он подключил мой телефон как раздел, а дальше надо пошариться по файловой системе.
AllCafe для iPhone 1.1.2
![]()
Выпустили мелкое обновление AllCafe для iPhone. Основные изменений - поддержка iPhone 3G (то бишь поддержка всей 4-й ветки iOS) и сжатие фотографий при добавлении отзывов на клиенте. К тому же теперь они загружаются в правильной ориентации (вертикальной или горизонтальной).
Что приятно - заапрувили всего лишь за сутки обновление. Похоже ревьюверы работают в ускоренном режиме сейчас - с 22 декабря по 29 декабря даже iTunes Connect будет закрыт на праздники.