LJ.Rossia.org fork development.'s Journal
 
[Most Recent Entries] [Calendar View] [Friends View]

Friday, July 29th, 2005

    Time Event
    7:15p
    Итак,
    поставили наконец server-status,
    и все стало гораздо яснее.
    Вот типичный слепок со статуса
    (типичный за последние сутки - я его
    перегружаю постоянно)

    Read more... )

    И что видно из сего?

    А видно то, что 95% из всех процессов Апача
    (из которых каждый, я хочу отметить, жрет по
    50 мегабайт) заняты совершенно не тем.
    А именно:

    1. Примерно половина грузят статику

    2. 40% занимаются тем, что считывают
    записи LJ через клиентский интерфэйс.
    Эти 40% жрут вчетверо больше ресурсов,
    чем все остальное вместе взятое.

    3. Из оставшихся 10% половина грузят
    жабий скрип.

    Приоритетные направления оптимизации из этого
    совершенно ясны: это

    1. Перевод статики на другой сервер (на днях
    я сие обеспечу, если никто не возражает)

    2. Избавление lj-gate от /interface/xmlrpc
    который, судя по всему, совершенно сломан.
    Надо исправить его на /interface/plain
    либо (если это не улучшит ситуации)
    вообще заменить на прямое обращение
    к базе.

    На сей момент гэйт жрет больше половины ресурсов
    системы, при том, что им пользуются считанные десятки -
    это категорически неправильно.

    А в целом - мы имеем (при 1863 пользователях)
    load average 0.30. Это при том, что при 1-1.5
    она работает идеально, а при 4-5 работает
    без особых проблем (хотя и тормозит).
    То есть 20000 дневников, видимо, можно
    у нас и без всякой оптимизации запустить;
    просто не хочется ждать, когда начнутся
    проблемы.

    Такие дела
    Миша

    Current Mood: blank
    Current Music: Fly Pan Am - Dans Ses Cheveux Soixante Circuits
    11:22p
    Я в каком-то виде довел до ума свой вариант lj-gate.


    Там причесан код (как мне кажется - довольно аккуратно) и избавлено от затеи с -10 минут (и фиксированного сдвига по времени). Ставить это сейчас не стоит, собака еще молодая, но я был бы признателен, если бы компетентные товарищи посмотрели на это дело и решили, что с этим делать дальше и стоит ли чего-то делать.

    Известные проблемы: в режиме только гейтования все должно быть хорошо, но если пользователь запостит в LJ-шный дневник постиннг руками - вероятно будут проблемы с backdate. Так же syncitems идейно правилен (с ним логика куда прозрачнее), но видимо нежелателен по соображеням эффективности. Ну и возможны глюки.

    Я бы не стал это сейчас посылать, но я завтра на несколько дней опять отваливаю и мне хотелось бы хотя бы минимального feedback'a.

    Upd:Кстати - тормозит гейт, скорее всего, потому что он каждые 10 минут должен опросить все трансляции, а сделать это кроме как тупо спросив про каждую, никак невозможно. Я думаю, что это и жрет основное время - постит любой человек гораздо реже. То есть у человека максимум 5 постингов в день - а запросов на него выдается за день почти 6*24=144.

    Так что syncitems вероятно можно и не выкидывать. А вот если дополнить функциональность syncitems возможностью спросить сразу про пачку пользователей я думаю, проблема вполне решится (его еще бы не помешало и нотификацией о удалениях дополнить - о новых комментах он вроде сообщает, хотя дока и утверждает, что это не реализовано).

    README из архива )

    << Previous Day 2005/07/29
    [Calendar]
    Next Day >>

About LJ.Rossia.org