mod_rewrite: Просмотр списка правил только один раз
С mod_rewrite есть одна проблема, об которую набиты уже наверное 15 миллионов шишек : он просматривает список правил снова и снова, пока URL удается хоть как-то изменить.Очень часто получаеются и бесконечные циклы(например добавление расширения - оно добавляется снова и снова, если специально регэкспом не ограничить), над которыми с непривычки приходится поломать голову. Все надежды на модификатор [L] тщетны - он лишь сразу запускает следующую иттерацию обработки. Да и без бесконечного цикла лишние иттерации скорости работы не добавляют :-)
Хочу поделится достаточно простым и универсальным средством борьбы с такой особенностью, который обнаружил только-что :-)
GZip и nginx: влияние на производительность
Добрый день. Недавно меня заинтересовал модуль ngx_http_gzip_static_module, и я решил погонять мой домашний сервер немного с разными настройками сжатия nginx, чтобы убедится, действительно ли современные процессоры настолько быстрые, что можно ставить сжатие в 9-тку и не париться. В качестве подопытного файла выступала слитая главная страница lenta.ru – 170кб. Во время тестирования обнаружилась интересная особенность, которая изменила мои взгляды на выбор количества процессов nginx.Заказывая оптимизацию сервера у хостера — держи ухо востро
Пару дней назад обратился ко мне человек с достаточно рутинной просьбой : подкрутить настройки VPS для его ускорения - за последнее время на сайте был резкий рост посещаемости, и сервер в часы-пик стал совсем загибаться.Это была бы рядовая и унылая статья про nginx и opcode-кеширование, если бы сервер не был до этого "прооптимизирован" техподдержкой хостера :-)
О том, что я обнаружил в процессе оптимизации, я и пишу эту небольшую заметку, дабы уберечь других от подобных фокусов хостеров. :-)
SSD : Что о них нужно знать
Год назад я купил себе 4 SSD: 2x 30Gb и 2x 60Gb OCZ Vertex. Своими впечатлениями, граблями, и особенностями использования (в том числе, и в серверном окружении) этих(и вообще) SSD я и хочу поделится.В общих чертах
Основное отличие SSD от HDD очевидно – там все во флеш памяти, чтение из которой очень быстро, запись – тоже достаточно быстрая, медленно только стирать. Также, у флеш-памяти ограничен ресурс по количеству стирания (разрушается диэлектрик, изолирующий заряд в ячейке памяти). Существуют 2 основных типа флеш-памяти: MLC и SLC. Основное отличие – в SLC на 1 ячейку 1 бит данных, в MLC – от 2 до 3 (соответственно, нужно уметь различать 4-8 уровней заряда). Т.к. порог ошибки в MLC-памяти намного ниже, то и ресурс получается меньше.SLC выдерживает порядка 100’000 стираний, MLC – 10’000 (старая, 2-х битовая), и до 3-5’000 (новая, 2-3 битовая, 34нм). Тенденция грустная – чем новее чипы памяти, тем меньше ресурс перезаписи.
Когда ресурс перезаписи исчерпывается – вы получите ошибку записи, но старые данные будут доступны, однако пока не так много людей смогли столкнуться с этим (вернее, я не видел ни одного).
Как не потерять почту когда умирают ДЦ или о надежности DNS
Многие недавно пострадали от одновременного падения тысяч серверов сначала в пожаре на hosting.ua, а затем при отключении на McHost. Зацепило и меня. Денег на умерших сайтах я не зарабатывал, однако почта постоянно нужна для деловой переписки. Несмотря на то, что почта у меня перенесена на Google (или как вариант на Yandex), ни одно письмо не могло до меня дойти, т.к. вместе с серверами умерли и Name-сервера, и отправители просто не могли прочитать MX-запись для моего домена. Итого, 26 часов я просидел без почты объясняя всем людям, с которыми я работаю, что им нужно дублировать все письма на другой ящик - достаточно унизительно и не профессионально.Как же заставить почту работать даже если все сервера хостера лежат?
Центральный процессор – дома с нуля
Если в последние лет 40 для выполнения задачи нужен микропроцессор – единственный рассматриваемый вариант это купить готовый. Ну или в крайне редких случаях «накатить» стандартное конфигурируемое FPGA ядро (например Nios II) с парой дополнительных инструкций. Многие сейчас даже не могут представить, что процессоры могут получаться каким-то другим путем :-) Это всё равно что считать что продукты беруться в магазине, а вырастить их самому – абсолютно невозможно.С одной стороны, зачем помнить основы технологии если все производится промышленно? На мой взгляд – чтобы быть уверенным, что технология не будет утеряна, что даже если случиться ядерная война компьютеры можно будет собирать из подручных материалов (так же как и с продуктами в начале 90 - многим пришлось возвращаться к технологии 100-летней давности из-за краха инфраструктуры производства и доставки).
Оказывается есть такие люди, которые до сих пор в качестве хобби делают центральные процессоры из дискретных компонент(транзисторов, реле) и микросхем низкой степени интеграции (счетчики, регистры). Единственные применяемые микросхемы – память (оперативная и перепрограммируемая).
В этой статье я хочу рассказать кратко об архитектуре и о нескольких реально работающих процессорах, сделаных в домашних условиях.
NTP: О точном времени
К сервису синхронизации времени по протоколу NTP все уже привыкли - оно включено по умолчанию или легко включается для большинства популярных операционных систем. Однако какая точность при этом достигается? Какие бывают сервера точного времени, и с какими можно работать простым смертным? Какие есть подводные камни, и как выбрать "правильные" сервера времени?Уничтожение земли и оценка метеоритной угрозы
Недавно интернет сотрясали апокалипсические новости о том, что пролетающий вблизи земли метеорит заметили лишь за 15 часов до "столкновения". Многие проявили скептицизм : "7 метров" - что такая крошка может сделать нашей огромной земле?Я покажу, что не только высоколобые умники могут считать непонятные цифры, но и практически каждый человек используя поиск в интернете может быстро найти нужные данные и инструменты даже для таких необычных задач как оценка метеоритной угрозы :-)
Из курса физики нам, пожалуй, нужно будет помнить (без формул) только то, что движущийся объект обладает кинетической энергией, и о законе сохранения энергии (если метеорит падает на землю – вся его энергия сохраняется, и практически вся выделится в виде тепла).
Масса метеорита
Ищем в гугле "Meteorite density", в первой же ссылке узнаем что плотность – около 3 грамм на кубический сантиметр (или 3 тонны на кубометр). Метеориты бывают и металлические - они будут плотнее, но падают реже.Диаметр метеорита тогда был 7 метров. Формулу объема сферы не помним? Ну и ладно.
Заходим на http://www.wolframalpha.com/index.html , пишем "Sphere volume", вставляем наши данные (радиус 3.5м) получаем объем 180 кубометров, и соответственно вес метеорита 180*3 = 540 тонн.
Опыт использования выделенного сервера на Intel Atom 330
Недавно я пытался привлечь внимание к серверам на процессорах Intel Atom. Многие встретили их со скептицизмом: «Разве может процессор для дешевых ноутбуков быть в сервере?». Сейчас услуга colocation nettop-ов на Atom-ах уже стала рядовой, и я готов поделиться с вами месячным опытом использования сервера на Intel Atom.Конфигурация сервера – неттоп Acer Aspire Revo 3600 на платформе nVidia Ion, Intel Atom 330 (2 физических ядра, 64 битный), 4Гб DDR2-800 памяти(Ubuntu 64-битная увидела только 3.2Гб, надо крутить BIOS), SSD OCZ Vertex 30Gb. Из оптимизаций под SSD – раздел cмонтирован с noatime, отключены access-логи, отключен swap (это нужно для увеличения срока службы – меньше записей – дольше прослужит, обо всем этом в отдельной статье. К слову, за месяц истрачено менее 0.5% ресурса SSD).
Стоит ли вам использовать Google AppEngine?
Внимание! Статья была написана в первые месяцы после старта Google AppEngine. Сейчас она полностью устарела.Disclaimer: Эта статья не о том, «какой я умный и какой Гугл тупой». Эта статья о некоторых неочевидных проблемах и особенностях Google AppEngine (GAE), о которых было бы неплохо знать тем, кто хочет начать работать с «империей зла»
Гугл сделал много отличных вещей – поиск, почта без спама… Гугл получает кучу наших приватных данных, но мы продолжаем пользоваться им, потому что оно так классно работает…
Некоторое время в IT-шных кругах поднялось достаточно шума об AppEngine, и я решил попробовать поработать с ним в моём новом проекте.
Я выбрал Python с гугловским framework-ом чтобы получить наилучшую совместимость и скорость. Начал я с тестов производительности, и результаты были… несколько разочаровывающими.
Тест | Запросов в секунду |
print 'Hello world' | 260 |
1 чтение из Datastore, запись в Datastore | 38 |
1 чтение из Datastore | 60 |
10 чтений из Datastore, 1 запись | 20 |
1 чтение из memcached, 1 запись в memcached | 80 |
1 чтение из memcached | 120 |
Обычное LAMP приложение, 6 SQL queries, http://3.14.by/ | 240 |