Sign in or Join FriendFeed
FriendFeed is the easiest way to share online. Learn more »
Если кто-то из здесь присутствующих разработчиков делал периодический биллинг (скользящий или календарный) на 100К и более пользователей (в идеале - 2М), откликнитесь, пожалуйста. Требуется консультация. Предлагаю вместе пообедать (в Москве).
биллинг на 6к пользователей, но 320к транзакций в сутки - календарный за предыдущие сутки. - lehha.developer
Я не делал, но интересно :) - Сергей Мартынов
lehha.developer: 6К - их можно в цикле всех обойти и обсчитать, если не ошибаюсь. Меня же интересует ситуация, когда всех обойти очень сложно, ибо много их. Как делают в таком случае - об этом и хотел пообщаться за обедом... - Дмитрий Котеров
6к пользователей, 320к доменов - каждый домен обсчитывается. Сейчас всё делается где-то за 2-3 минуты, плюс 5-7 минут обновления статистики. По сути в цикле и работает, берется каждый домен и берутся транзацкции за предыдущие сутки, биллятся (вносятся на баланс, обсчитываются комиссии, вознаграждения и удержания, блокировки и откаты). Собственно биллинг - это простая процедура... more... - lehha.developer
О, это интересно. 2-3 минуты - ИМХО очень быстро! А что за проект (можно ссылку?)? По описанию похоже на регистратора доменов. :-) - Дмитрий Котеров
Nginx, regex-домены, "root /your/app/$1/htdocs". Не работает fastcgi_php? Замените одну "root ..." на две директивы: "set $docroot /your/app/$1/htdocs; root $docroot;". Видимо, nginx неправильно воспринимает директиву "fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;", если определение в директиве "root" содержит regexp-маркеры.
интересный трюк. bugtack @ sysoev.ru ? - lehha.developer
Кстати, есть еще грабли при использовании регулярок в server_name: внутренние редиректы начинают работать криво. Лечится добавлением server_name_in_redirect off; - Илья Пирогов
Мое интервью про Рутвит: http://www.ibusiness.ru/markets...
Почему я использую nginx+fastcgi_php, а не nginx+apache+mod_php? Соображение производительности здесь вовсе не главное. Смотрите. Nginx по любому нужен для "медленных" клиентов, его нельзя исключить. А в связке "apache+nginx" конфигов поддерживать в 2 раза больше, чем в связке "просто nginx". Так что apache сбривается бритвой Оккама, не более того.
>Так что apache сбривается бритвой Оккама... Получается, Апач совсем не нужен? Как же так, столько лет работали на нем, и теперь отказаться? Грустно как-то. Сразу стишок такой на ум пришел. Сервер Апач. Молчит угрюмо твой лог. Сервер Апач. Сжимает память висок. Сервер Апач в даль прощальную дня Зовет меня. Сервер Апач. Хочу твоей быстроты. Сервер Апач. Свои открой мне скрипты. Сервер... more... - Vol Gavr
:-) Ну что значит - "совсем не нужен"... В каких-то проектах - нужен, в каких-то - не очень. Хостинг на много пользователей, например, без апача организовать сложновато. - Дмитрий Котеров
Я написал статью "Подводные камни при использовании кэширования в nginx": http://dklab.ru/chicken...
очень хорошая и полезная статья, в proxy_cache в nginx правда очень много подводных камней. спасибо! - Denis
Большинство подводных камней автор подкладывает вам сам. Кеширование 304, игнорирование no-cache от бекенда, принудительная установка no-cache клиенту, обнуление Last-Modified. Для ротации есть ngx_http_random_index_module. - Sergey Homenkow
ngx_http_random_index_module для статичных страниц. Дмитрий объяснил как сделать это без прегенерации и раскатывания в динамике. - Maxim Gurets
@gurets Угу. В статье говориться о ~5000r/s. Когда 500 из них ломануться к бекенду обновлять один блок... Уж лучше cron. - Sergey Homenkow
Серег, но решение, согласись, элегантное. Для этого будут бизи-локи. Сысоев, правда? - Maxim Gurets
К сожалению не вижу элегантности в этой набле. nginx, например, как порядочный кеш сам умеет отдавать 304 на данные из кеша (по If-Modified-Since). Может и HEAD умеет. Не проверял. if-non-match при кешировани на 30-300 сек тоже особого смысла не имеет. - Sergey Homenkow
Кешировать на 5 мин на сервере и запрещать кеширование у клиента/в шаред-кеше - тоже странное решение. - Sergey Homenkow
Ну отчего же странное? Страница "псевдо-динамическая" и при каждом рефреше нужно отдавать рандомные блоки. В условиях применимости решения это описано. - Maxim Gurets
В статье 3 раздела. Запрет кеширования в том числе и на раздел кеширование страницы целиком. Мне нравятся наблы Дмитрия. Но не все. - Sergey Homenkow
Не понял вторую фразу, уточните, пожалуйста. - Дмитрий Котеров
Если вы о том, что fastcgi_ignore_headers блокирует вывод в браузер заголовка Cache-Control, то это не так. Директива fastcgi_ignore_headers блокирует только ИНТЕРПРЕТАЦИЮ указанных заголовков nginx-ом, в браузер они попадают (только что специально еще раз проверил). - Дмитрий Котеров
Первая часть статьи про кеширование страницы целиком. В этой части тоже отключается кеширование на стороне клиента. - Sergey Homenkow
Перечитал. Я ошибся. В первой части кеширование на стороне клиента не отключается. Ok. - Sergey Homenkow
Не понял фразу "Это как раз пример строчку, написанных кровью" - опечатка? - Изменить - Вставить
Опечатка. Спасибо, исправил. - Дмитрий Котеров
А как бы сделать так чтобы разные страницы хранились в кэше разное время? Есть идеи? - Mikhail Pilin
Встречайте — RuTvit, мой новый стартап. http://rutvit.ru (подробности - в обзорной статье на Хабре: http://habrahabr.ru/blogs...)
Кому понравилось - проголосуйте, пожалуйста, за статью на хабре, чтобы ее вынесло на берег: http://habrahabr.ru/blogs... - Дмитрий Котеров
Ну нахрена ж ещё и ещё клоны твиттера, когда он уже есть?! - Благовестник
залез, огляделся. youtube-rutube twitter-rutvit может быть что-то и получится - Сашенька
Честно говоря не понимаю зачем. А лого просто ужос. - Anton Egorov
С доменом на мой взгляд неудачный выбор сделали, W было бы уместнее. - Anton Egorov
По поводу домена rutwit.ru с буквой "w". Комментарии здесь и на Хабре прекрасно иллюстрируют полезность обратной связи от сообщества. Мы действительно недооценили важность приобретения домена rutwit.ru, хотя и вели вялые переговоры о его покупке. К счастью, после данных комментариев на Хабре мы и предыдущие владельцы домена быстро пришли к разумному соглашению. В дополнение к... more... - Дмитрий Котеров
Отлично. Очень рад за вас. Поработайте еще над дизайном и типографикой в частности. И будет совсем хорошо) - Банал Когнитивной Науки from iPhone
От ознакомления с сайтом остановила принудительная рега - bbsodbbsod
Интересно по архитектуре было бы пообщаться в jabber-е, если автор не против - Sergey Konoplev
HAProxy 1.3.20 - http://haproxy.1wt.eu - замечательно работает как TCP-балансер. Но в HTTP-режиме - это один сплошной глюк. Например, режет HTTP-ответ до 8032 байт (или до другой цифры, зависящей от погоды на улице, а иногда и настроек fastcgi_buffer_size из nginx, который стоит за балансером). Предупрежден - вооружен.
...как тут выяснилось (см. мой более поздний пост) - и в TCP-режиме есть глюки. - Дмитрий Котеров
Купил iPhone. Накидайте в комментарии, пожалуйста, список приложений, которые имеет смысл поставить (и какие у них преимущества). Желательно со ссылками.
Читать электронные книжки удобно с помощью ShortBook (http://itunes.apple.com/WebObje...). Раньше читал с помощью i2Reader (http://ripdev.com/i2reader), но 3я версия у меня не заработала. iphone tunnel suite(http://www.makkiaweb.net/itunnel...) - для заливки файлов. Free Ipod video converter (http://www.koyotesoft.com/indexEn...) - для конвертирования видео. - Andrei Solovev
Поздравляю с покупкой) приходи уже в гости, насоветую тебе всего. - Банал Когнитивной Науки from iPhone
Спасибо всем откликнувшимся! Пойду ставить. - Дмитрий Котеров
Кто знает, каким образом FriendFeed заставляет Firebug не показывать в консоли крутилку XMLHttpRequest-а? Сам запрос идет, а в консоли он не отображается.
Дим, а он разве не постоянное соединение устанавливает? У тебя вроде была похожая библиотечка. И tornado в бэкэнде. - Dmitry Bykadorov
У меня отображается http://grab.by/a4h - Никита Васильев
Постоянное, но в Windows в Firebug этого соединения не видно. - Дмитрий Котеров
Жмите gzip на стороне PHP (ob_gzhandler), а не средствами nginx. Я серьезно. Потому что так вы сможете при необходимости легко закэшировать отдельно уже сжатый контент через fastcgi_cache или proxy_cache (не забудьте только замешать в ключ кэширования $http_accept_encoding!), а не тратить CPU на сжатие nginx-ом каждый раз.
...даже несмотря на то, что gzip на стороне PHP приводит к бОльшему простою PHP-процесса, а также требует затрат памяти на хранение несжатого контента целиком. - Дмитрий Котеров
Я вот вынужден gzip выключить и в nginx и в PHP - первый действительно жмет при каждом обращении к кешу, а второй кушает ну очень много процессорного времени (машинка куплена слабая). Люди скажите кроме повышенного расхода трафика на что я еще попадаю? - Mikhail Pilin
"Попадают" в основном пользователи. Ведь это им приходится ждать загрузки в 2-3 раза дольше обычного... - Дмитрий Котеров
В nginx fastcgi_cache* не работает при наличии заголовков "Pragma: no-cache", "Cache-Control: private" и др. Осторожно! Эти заголовки неявно выставляет session_start() в PHP. Отключить сессии и подавить заголовки Expires, Cache-Control, Pragma и Last-Modified можно так: ini_set('session.use_cookies', 0); ini_set('session.cache_limiter', '');
т.е с этим хаком нельзя использовать куки? - Dmitry Bykadorov
Когда страница кэшируется целиком в nginx, куки не имеют смысла. Потому что любая кука, установленная скриптом, будет закэширована и потом отдана другому клиенту. Наверное, это совсем не то, что хотелось получить, верно? С сессией все еще опаснее, потому что, если допустить просачивание сессионной куки наружу, все клиенты получат единую сессию, что приведет к разрушительным последствиям. - Дмитрий Котеров
Оказалось, что можно написать: ini_set('session.cache_limiter', '') - это подавляет вывод заголовков кэширования. Обновил исходный текст поста. Решение превратилось в довольно аккуратное. - Дмитрий Котеров
И даже более того: можно в PHP ничего не править, а обойтись fastcgi_hide_header "Set-Cookie"; fastcgi_ignore_headers "Cache-Control" "Expires"; - Дмитрий Котеров
Сам такое пользую - fastcgi_ignore_headers Cache-Control Expires; - Mikhail Pilin
HA-Proxy version 1.3.17, TCP-проксирование. Работал долгое время отлично. Вдруг внезапно соединения начали подвисать. Не вылечилось ничем (включая перезагрузки), конфигурация машины точно не менялась. Я еще понимаю, когда проблемы были в HTTP, но TCP-то чего... Все, с меня хватит. Пойду искать замену.
Кстати, если кто-то знает альтернативы, напишите сюда, пожалуйста. Интересует самый простейший TCP-балансировщик, который не глючит. - Дмитрий Котеров
так вот тут http://yum.aclub.net/pub... лежит 1.3.20 - в нём, вроде, нет проблем :) - Ilyas
В 1.3.17 тоже не было на протяжение почти года. А потом вдруг раз! - и есть. В changelog-е нет сколько-нибудь похожих багфиксов, так что, я думаю, они это не починили (как не починили HTTP-проксирование). А возможно, HA-Proxy просто не дружит с OpenVZ... - Дмитрий Котеров
Директива nginx fastcgi_cache_valid - http://sysoev.ru/nginx... - игнорируется, если в ответе скрипта есть либо заголовок Cache-Control: public; max-age=ЧИСЛО_СЕКУНД, либо заголовки, запрещающие кэширование. (Кстати, они выставляются, например, в session_start()). Кэш начинает храниться ЧИСЛО_СЕКУНД. Осторожно!
А еще, похоже, при наличии "Cache-Control: public; max-age=ЧИСЛО_СЕКУНД" nginx (гад такой) кэширует даже ответы "304 Not Modified" (полученные по If-Modified-Since или If-None-Match), хотя в fastcgi_cache_valid прописано только кэширование "200 OK". В кэш-файликах прямо так и записывается, с заголовками и пустым телом ответа, и все последующие пользователи получают белую страницу. Это поведение лишено смысла и очень похоже на баг. Чуть позже буду более детально разбираться. - Дмитрий Котеров
Валидация коммита в Git: 1) в hooks/pre-receive пишем sudo /usr/bin/rsync -a --delete /repo /repo.COPY; 2) в hooks/post-receive проверяем файлы из репозитория и, если коммит плохой, делаем обратно sudo /usr/bin/rsync -a --delete /repo.COPY /repo; 3) в post-receive можно ходить по SSH и делать git-pull, если нужно: http://bit.ly/djSjc
А что значит «валидация», в данном случае? - Alex Kapranoff
под валидацией скорее всего подразумевается, например, проверка кода на синтаксис или запуск какого-нибудь быстрого теста. - Ilyas
Или configtest/reload какого-нибудь демона, если в репозитории хранится его конфиг. Если configtest закончился с ошибкой, коммит надо запретить. - Дмитрий Котеров
Спасибо, интересно. Не приходило в голову на этом этапе отвергать код :) Надо попробовать. - Alex Kapranoff
На STDIN хука, кстати, передается список измененных объектов. Правда, я с ним не экспериментировал пока. - Дмитрий Котеров
Еще при валидации в PHP-проектах я проверяю: а) что в PHP-файле ровно один "<?" и нет ни одного "?>"; б) что PHP-файл состоит только из комментариев, директив require_once и объявлений классов class Xxx { ... }, т.е. что его можно подключить без побочных эффектов через autoload (это очень удобно на практике). - Дмитрий Котеров
Если дефолтная системная локаль - UTF8, а надо запустить старый скрипт Perl в windows-1251, использующий LWP, то решение проблемы с кодировками такое: use POSIX qw(setlocale LC_ALL); setlocale(LC_ALL, "ru_RU.cp1251"); ... $result = Encoding::encode("cp1251", LWP::Simple::get(...))". Увы, новый LWP всегда возвращает результат с флагом UTF8...
Hi, DmitryKoterov. Дмитрий Медведев (ru_medvedev) is now following your tweets on Twitter. Вот он: http://twitter.com/ru_medvedev - хм... :-)
Хехе, поздравляю :). Где-то в новостях читал, что Яндекс является для государства стратегическим важным предприятием, вот видимо потихоньку работников Яндекса в твиттер добавляет :) - youROCK
Используете pgBouncer в режиме Session Pooling? Не забудьте прописать в конфиге "server_reset_query = DISCARD ALL", чтобы следующий процесс не зависел от предыдущего в случае внезапной смерти скрипта.
Поставили CentOS на SATA-диск, а диск стал жутко тормозить (hdparm -t /dev/md0 выдает чтение 3-4 М/с)? Добавьте параметры "acpi=off pci=nommconf ide0=noprobe ide1=noprobe" в grub.conf, чтобы строчка выглядела так: "kernel /boot/vmlinuz-2.6.18-128.el5 ro root=/dev/md0 acpi=off pci=nommconf ide0=noprobe ide1=noprobe". Все начнет работать быстро.
Заметил интересный рекламный ход, повышающий кликабельность баннера. См. первый скриншот (вертикальный): в нем намеренно допущена орфографическая ошибка (я отметил ее стрелкой). Кликаем и видим тот же баннер, но горизонтальный и уже без ошибки (см. второй скриншот). Не верю, что это безграмотность. Думаю, что специально так сделали.
111.png
Show all
Мне кажется, описка, а потом исходник потеряли или кто в отпуск ушел, потом поправят :) - Dennion
Пригласить всех-всех людей из своей адресной книги GMail во FiendFeed можно так: идем на http://friendfeed.com/friends... , выбираем там GMail, а затем вводим в адресной строке браузера заклинание: javascript:$("input[type='checkbox']").each(function(){this.click()});void(0) - это взводит все галочки разом.
только что получили на support@habrahabr.ru :) (вернее 3 часа назад) - Глеб Арестов
Согласно http://www.ietf.org/rfc... - RFC на cookies - хост вида y.x.foo.com не может поставить cookie на .foo.com. (См. по этой ссылке "domain-matches" и секцию "4.3.2 Rejecting Cookies" - "because ... y.x ... contains a dot"). Однако прекрасно ставит (в Firefox, например). Что за...?
Кстати говоря, согласно новому стандарту на куки - http://www.faqs.org/rfcs... - то же самое. Должен игнорировать. - Дмитрий Котеров
Полезные команды Linux при превышении лимитов на ресурсы: "sysctl -a", "ipcs", "cat /proc/user_beancounters" (последняя для OpenVZ). Некоторые настройки есть еще в файле /etc/sysctl.conf. В том числе - в контейнере OpenVZ, особенно kernel.shm*: они должны быть раскомментированы и установлены достаточно большими.
Как известно, Windows 32-бит не видит все 4Г оперативки в силу архитектуры своих драйверов. У меня видит только 2.5Г. Решение: создать RAM-диск - http://www.megaleecher.net/RAMDisk - и разместить на нем... файл подкачки на 1.5Г. Это не бред, это Windows! Работает. Теперь все 4Г при деле. Еще полезная ссылка: http://www.computerperformance.co.uk/Registr...
Факин мэжик, только что обсуждал это в жаббере. А что, PAE не существует? - Denya
Драйверы не все совместимы с PAE, увы. - Дмитрий Котеров
Ах вот где собака зарыта. Ясно, спасибо - Denya
Я тупо поставил 64бит. Не сказать что счастлив... зато 4Гб... куда-то расходуются. Раньше 16мб почти хватало... - Dmitry Bykadorov
Я тупо поставил на новую машину Win7 x64, проблем не имею. Дрова для звука, kxdriver, так раз x64 сейчас делают =) - Denya
64-бита я тоже хотел поставить вначале, но остановили 2 аргумента: а) говорят, драйвера сложнее найти потом, б) хотелось оставить Windows лицензионным, который вместе с ноутбуком шел. - Дмитрий Котеров
В случае ноутбука может быть и проблемы будут, ага. А на обычном десктопе — ну какое тут специфичное железо такое есть, что дров не найти, м? - Denya
В случае ноутбука специфичное железо -- это: видеокарты, вай-фай драйвера, блютус драйвера, веб-камеры и т.д. - youROCK
У меня так на ноутбуке 8 Гб, будет ли разумно создавать рам-диск на 4,5 Гб? Я так понимаю, своп работает на уровне ядра, и переключений контекста для вызова дисковых драйверов/системных вызовов быть не должно? То есть, это работает довольно быстро, да? - youROCK
Если ОС 32-битная (и только в этом случае) - то да, будет разумно поставить файл подкачки на RAM-диск. По-другому эту память просто в 32-битной Windows не задействовать (альтернативный способ - режим со включенным PAE - дает осложнения при установке многих драйверов). - Дмитрий Котеров
@dennydov А в чем его "хитовость"? Очень удобная фича: ссылка из письма сразу же логинит на сайт, пароль не нужно вспоминать.
Профессиональное общение на Моем Круге: http://bit.ly/Mgptw
@tuganbaev А не могли бы Вы уточнить: в Windows Mobile Вы пользуетесь браузером IE или Оперой?
@ilazarev Да, ты почти "правильно ошибаешься" :-) в списке компании идут по числу людей, но наверху всегда те, в которых есть вакансии.
@zalupohuj Да, спасибо, мы знаем об этом баге. 2-й круг пересчитывается с задержкой. В ближайший релиз выложится исправление.
Статья "Причины стремительного успеха PHP": http://habrahabr.ru/blogs...
@sr71at Насчет спама в МК. Там есть ссылочка наверху каждого сообщения - "спам". Если ее нажать, то спамера быстро заблокируют.
Other ways to read this feed:Feed readerFacebook