Pull to refresh

Comments 25

Насчет udp рекомендую посмотреть pinba.
Изначально pinba делалась для php, но уже есть nginx модуль для pinba.
Я думаю, модуль apache для pinba сделать будет не так сложно.
Спасибо кстати за pinba. Написать UDP не сложно. На самом деле даже для Linux setproctitle передрать не сложно. Устал на поиске listen queue :))) Основная сложность оказалась на вот этом Listen Queue — очень нестандартная вещь в смысле информации, хотя в ядрах имеется с BSD4.4.
Ну например. Ну один фиг посмотреть внутрь надо. А то как посмотришь, так волосы шевелиться начинают.
А вот точно ли rx_queue это оно? Я вот гуглением не понял. Такое впечатление, что там наполненность буферов. Во всяком случае netstat и ss показывают совершенно разные значения Recv-Q и Sent-Q для одного и того же на одной машине в один момент времени. А вот ss лезет в netlink(7) в нормальной ситуации.
Хм… по исходникам вообще похоже на «оно». Собственно в netlink попадает inet_diag_msg.rqueue который явно в /usr/src/linux/net/ipv4/tcp_diag.c:

if (sk->sk_state == TCP_LISTEN) {
                r->idiag_rqueue = sk->sk_ack_backlog;
                r->idiag_wqueue = sk->sk_max_ack_backlog;
        } else {
                r->idiag_rqueue = max_t(int, tp->rcv_nxt - tp->copied_seq, 0);
                r->idiag_wqueue = tp->write_seq - tp->snd_una;
        }
P.S. Некстати, хочу дополнить его функцией периодического сброса статистики по UDP куда-нибудь. Чуть более полной.
— добавь в collectd
Ну вот как вариант.

P.S. Вот кстати следующий шаг — заправить gstat в collectd
И вспомнили же труп…
Судя по коду он будет работать без проблем с prefork и основанным на нем, такими как itk.
peruser получше будет, чем itk. Itk chroot не умеет
Тем не менее проект труп.
peruser не мертв, пилят его потихоньку, в Freebsd листах патчи проявляются периодически.
Проверял и на prefork и на worker. На worker по очевидным причинам запросы не показывает. На event тоже запросы не показывает, а статистику не проверял на нем.
peruser/itk не проверял. Должен показывать статистику… запросы… а фиг знает. Это в зависимости где он форк делает. И да, будут врать со статусом.

Не надо использовать ни itk, ни peruser. Запускайте каждому свой апач. Там перерасход памяти под буфера, да под конфиг смехотворный. А и FreeBSD и вроде даже Linux уже 100 лет умеют mmap´ить и .so, и запускаемые файлы, там вообще перерасхода 0. Под FreeBSD «каждому свой апач» вообще штатно из кородки идёт — взгляните внутрь /usr/local/etc/rc.d/apache24. С Linux сложнее, они такие затейники с конфигурациями…
Это смехотворно, когда надо штук 10 запустить, когда 500 уже другой результат.
Разница 2.5 гб под только запущенное и 500мб под только запущенное.
Как разкочегарится все вырастает в два раза.
Это откуда такие цифры? Нет там такого. Любой php скрипт сожрёт больше в сумме, чем apache.
mod_perl + mod_php вот в такое и вырастает.
А в peruser _не_ вырастает? За счёт простите чего?
Для Linux давно уже использую модифицированный модуль mod_proctitle(не этот, а старый).
К нему собрал библиотеку с одной функцией setproctitle.
Есть в Linux проблема с длиной тайтла, но я ее решаю в Apache правкой скрипта инициализации.
Работает как часы уже 3-4 года.
Ну вот мне надо просто взять и туда же воткнуть тоже такую функцию :) У всех есть проблема с длиной тайтла :) FreeBSD просто не устанавливает его, если длина превышена. Я вот думаю, не внедрить ли враппер-функцию, которая резать будет.
Я как-то кроссплатформенный setproctitle из исходников proftpd выдирал, там оно вполне компактно и не пугающе.
А вот кстати. А кто-нибудь в курсе, что там ещё за способы в proftpd? Там есть ifdef´ы, которые я не совсем понимаю. Документации и комментариев конечно 0, поэтому только гадать.
Вам бы документацию по этому механизму в Linux почитать.
Проблемы ведь в том что длина тайтла должна быть такой же как длина argv массива.
По докам можно дописать еще в env массив, но по факту не работает.
Т.е. нужно сделать длинным argv массив.
А ограничивать длину все равно нужно, иначе переполнение будет.
Sign up to leave a comment.

Articles