Возможно вы искали: 'South Park'

May 15 2025 19:15:25
  • Как сделать 8Gamers.Ru домашней страницей?
  • Игры
    • База данных по играх
    • Игровые новости
    • Игровая индустрия
    • Обзоры на игры
    • Прохождения игр
    • Гайды к играм
    • Превью о играх
    • Игровые тизеры
    • Игровые арты
    • Игровые обои
    • Игровые скриншоты
    • Игровые обложки
    • Игровые трейлеры
    • Игровое видео
    • Вышедшие игры
    • Ближайшие релизы игр
  • Кино и ТВ
    • База данных по кино
    • Статьи о кино
    • Постеры
    • Кадры из кино
    • Кино трейлеры
    • Сегодня в кино
    • Скоро в кино
  • Комиксы и манга
    • Манга по алфавиту
    • База данных по комиксах
    • Читать онлайн комиксы
    • Читать онлайн манга
    • База персонажей
  • Читы и коды
    • Чит-коды для PC игр
    • Чит-коды для консольных игр
    • Трейнеры
    • Коды Game Genie
  • Моддинг
    • Модификации
    • Карты к играм
    • Программы для моддинга
    • Статьи о моддинге
  • Геймдев
    • Всё о создании игр
    • Список движков
    • Утилиты в помощь игроделу
    • Конструкторы игр
    • Игровые движки
    • Библиотеки разработки
    • 3D-модели
    • Спрайты и тайлы
    • Музыка и звуки
    • Текстуры и фоны
  • Рецензии
    • Игры
    • Кино
    • Аниме
    • Комиксы
    • Мангу
    • Саундтреки
  • Саундтреки
    • Лирика
  • Файлы
    • Патчи к играм
    • Русификаторы к играм
    • Сохранения к играм
    • Субтитры к кино
  • Медиа
    • Видео
    • Фото
    • Аудио
    • Фан-арты
    • Косплей
    • Фото с виставок
    • Девушки из игр
    • Рисунки
    • Рисуем онлайн
    • Фотохостинг
  • Юмор
    • Анекдоты
    • Афоризмы
    • Истории
    • Стишки и эпиграммы
    • Тосты
    • Цитаты
  • Флеш
    • Азартные
    • Аркады
    • Бродилки
    • Гонки
    • Для девочек
    • Для мальчиков
    • Драки
    • Квесты
    • Леталки
    • Логические
    • Мультфильмы
    • Открытки
    • Приколы
    • Разное
    • Спорт
    • Стратегии
    • Стрелялки
Статистика

Статей: 87772
Просмотров: 96111483
Игры
Injustice:  Gods Among Us
Injustice: Gods Among Us
...
Dark Souls 2
Dark Souls 2
Dark Souls II - вторая часть самой хардкорной ролевой игры 2011-2012 года, с новым героем, сюжето...
Battlefield 4
Battlefield 4
Battlefield 4 - продолжение венценосного мультиплеер-ориентированного шутера от первого ли...
Кино
Steins;Gate
Steins;Gate
Любители японской анимации уже давно поняли ,что аниме сериалы могут дать порой гораздо больше пи...
Ку! Кин-дза-дза
Ку! Кин-дза-дза
Начинающий диджей Толик и всемирно известный виолончелист Владимир Чижов встречают на шумной моск...
Обзоры на игры
• Обзор Ibara [PCB/PS2] 18357
• Обзор The Walking ... 18801
• Обзор DMC: Devil M... 19879
• Обзор на игру Valk... 15877
• Обзор на игру Stars! 17764
• Обзор на Far Cry 3 17948
• Обзор на Resident ... 16024
• Обзор на Chivalry:... 17508
• Обзор на игру Kerb... 17981
• Обзор игры 007: Fr... 16619
Превью о играх
• Превью к игре Comp... 17960
• Превью о игре Mage... 14464
• Превью Incredible ... 14721
• Превью Firefall 13479
• Превью Dead Space 3 16334
• Превью о игре SimC... 14730
• Превью к игре Fuse 15442
• Превью Red Orche... 15542
• Превью Gothic 3 16343
• Превью Black & W... 17354
Главная » Статьи » Разное » Патч для ограничения колличества sendmail процессов (patch sendmail)

Патч для ограничения колличества sendmail процессов (patch sendmail)

Ключевые слова: patch, sendmail, (найти похожие документы)

Date: Thu, 7 Feb 2002 20:22:40 +0000 (UTC)
From: Valentin Nechayev <netch@segfault.kiev.ua>
Newsgroups: fido7.ru.unix.bsd
Subject: Патч для ограничения колличества sendmail процессов

> > Я искал как ограничить количество тех процессов, что отфоркиваются при
> > 1) генерации отлупов, 2) фоновом запуске доставки при DeliveryMode=background.
> Тогда решение - в студию (и FAQ) :-))))

Вот такой он - сразу ему решение подавай...
Ладно, см. конец письма. Это для sendall() - через него управление
проходит, если не поднят флаг doublequeue. Если поднят - тогда идет через
dowork(), там аналогично, но в cvs еще не вносил.
FAQ не может быть потому что вопросы еще никто не задавал;))

> > Тормозов не заметил, абсолютно. Причем не три access() а три open()+flock()
> Что ещё хуже.

Чем хуже-то? Номера инодов фактически в name cache, каталог очереди -
в dir cache.

> > Типа да. Ассманн, Шапиро...
> В таких развесистых долгих проектах код расползается, как тараканы.

Это без качественного дизайна.
sendmail в этом плане вообще ужас. В качестве примера, рекомендую почитать
dropenvelope(): с одной стороны, там генерируются отлупы; с другой стороны,
это деструктор объекта "письмо"; с третьей стороны, это часть конструктора
объекта "письмо", которая действует после начального bzero()!
Я вообще не понимаю как можно в таком бардаке достигать какого-то
существенного прогресса...

> Удивительно, что всего в двух (?) местах пришлось править - у M$
> каждый программист с собой копию stdlib тянет со своими isalpha()/isdigit()/etc :-))

Sendmail 8.12 тянет вообще свой stdio. Правда, под BSD его не включает -
возможности BSD'шного удовлетворяют. Под glibc не смотрел, что делает.
Два места - это уже специфика того, как sendmail обходится с ситуацией
изменения списка получателей. В srvrsmtp.c есть такой кусок:

SmtpPhase = "delivery";
e->e_xfp = freopen(queuename(e, 'x'), "w", e->e_xfp);
id = e->e_id;

if (doublequeue)
{
/* make sure it is in the queue */
queueup(e, FALSE);
}
else
{
/* send to all recipients */
sendall(e, SM_DEFAULT);
}
e->e_to = NULL;

/* issue success message */
message("250 %s Message accepted for delivery", id);

/* if we just queued, poke it */
if (doublequeue &&
e->e_sendmode != SM_QUEUE &&
e->e_sendmode != SM_DEFER)
{
CurrentLA = getla();

if (!shouldqueue(e->e_msgpriority, e->e_ctime))
{
unlockqueue(e);
(void) dowork(id, TRUE, TRUE, e);
}
}

вот в нем и заключена злополучная развилка. Вызовы sendall() и dowork() здесь -
два варианта, когда доставка уходит в фоновый процесс; doublequeue -
флаг, который подымается, если получатели раскрывались (по крайней мере,
я так понял - логика там темная, замечал уже по результатам).
Когда-то это, наверно, имело заметный смысл. Но сейчас от этого больше
путаницы, чем пользы.

> > оседают в своп - чтобы в памяти не лежать - и оттуда обычно не возвращаются.
> > Часто лежит еще что-то.
> О нашёл - на DDT после 64 дней в свопе аж 116 кил! :-)))
> Сильно бездельничающей я бы её не назвал - одних nnrpd 180 штук,
> и CGP на ней нет :((( Видимо, всё же нужно памяти в ваши релеи
> довоткнуть - говорят, она всё ещё дешёвая.

BSD будет высвоплять ненужное независимо от объема памяти, так уж
VM устроена. А подымать этим память только ради того чтобы оно делало
thrashing на один раз в сутки меньше... не думаю, что это того стоит.;))
Хотя память добавлять, естественно, будем. По плану.;))


/netch

Index: deliver.c

RCS file: /usr/homes/netch/Cvsroot/luckynet/sendmail/8.9/src/deliver.c,v
retrieving revision 1.7
retrieving revision 1.11
diff -u -r1.7 -r1.11
--- deliver.c 2000/12/04 13:41:21 1.7
+++ deliver.c 2001/12/19 12:59:02 1.11
@@ -8,10 +8,11 @@
* forth in the LICENSE file which can be found at the top level of
* the sendmail distribution.
*
+ * @(#)deliver.c 8.367 (Berkeley) 1/18/1999
*/

#ifndef lint
-static char sccsid[] = "@(#)deliver.c 8.367 (Berkeley) 1/18/1999";
+static char sccsid[] = "@(#)$Id: deliver.c,v 1.11 2001/12/19 12:59:02 netch Exp $";
#endif /* not lint */

#include "sendmail.h"
@@ -65,6 +66,12 @@
bool somedeliveries = FALSE, expensive = FALSE;
pid_t pid;
void sendenvelope __P((ENVELOPE *, int));
+#define _NXLA
+#if defined(_NXLA)
+ int fd_worklock = -1;
+ char P[1024];
+ int ii, rval, nmax;
+#endif

/*
** If this message is to be discarded, don't bother sending
@@ -544,6 +551,47 @@
pid = fork();
if (pid > 0)
exit(EX_OK);
+ /*sm_syslog( LOG_INFO, e->e_id, "_: sendall(): double fork" );*/
+#if defined(_NXLA)
+ nmax = MaxChildren;
+ if( nmax <= 0 )
+ nmax = RefuseLA;
+ if( nmax <= 0 )
+ nmax = 10;
+ fd_worklock = -1;
+ srand(time(NULL)+getpid());
+ for( ii = 1; ii <= 3; ii++ ) {
+ int se;
+ rval = rand() % nmax;
+ snprintf( P, sizeof P,
+ "%s/dowork_lock.%d",
+ QueueDir, rval );
+ fd_worklock = safeopen( P,
+ O_RDWR|O_CREAT,
+ 0644,
+ SFF_NOLINK|SFF_ROOTOK|
+ SFF_SAFEDIRPATH|SFF_CREAT|
+ SFF_REGONLY|SFF_NOWLINK|
+ SFF_OPENASROOT|SFF_NOLOCK
+ );
+ se = errno;
+ if( fd_worklock < 0 )
+ continue;
+ if( flock( fd_worklock, LOCK_EX|LOCK_NB ) ) {
+ close( fd_worklock );
+ fd_worklock = -1;
+ continue;
+ }
+ break;
+ }
+ if( fd_worklock < 0 ) {
+ if( LogLevel > 8 ) {
+ sm_syslog( LOG_INFO, e->e_id,
+ "worklock: denynow" );
+ }
+ finis( TRUE, EX_TEMPFAIL );
+ }
+#endif /* _NXLA */

/* be sure we are immune from the terminal */
disconnect(2, e);
@@ -616,8 +664,12 @@
CurEnv = e;

Verbose = oldverbose;
- if (mode == SM_FORK)
+ if (mode == SM_FORK) {
+#if defined(_NXLA)
+ close( fd_worklock );
+#endif
finis(TRUE, ExitStat);
+ }
}

void
1317 Прочтений •  [Патч для ограничения колличества sendmail процессов (patch sendmail)] [08.05.2012] [Комментариев: 0]
Добавил: Ukraine Vova
Ссылки
HTML: 
[BB Url]: 
Похожие статьи
Название Добавил Добавлено
• Патч для ограничения колличества se... Ukraine Vova 08.05.2012
Ни одного комментария? Будешь первым :).
Пожалуйста, авторизуйтесь для добавления комментария.

Проект входит в сеть сайтов «8Gamers Network»

Все права сохранены. 8Gamers.NET © 2011 - 2025

Статьи
Рецензия на Pressure
Рецензия на Pressure
Чтобы обратить на себя внимание, начинающие маленькие разработчики, как правило, уходят в жанры, ...
Рецензия на Lost Chronicles of Zerzura
Рецензия на Lost Chron...
Игры, сделанные без любви и старания, похожи на воздушный шар – оболочка есть, а внутри пусто. Lo...
Рецензия на The Bridge
Рецензия на The Bridge
«Верх» и «низ» в The Bridge — понятия относительные. Прогуливаясь под аркой, можно запросто перей...
Рецензия на SimCity
Рецензия на SimCity
Когда месяц назад состоялся релиз SimCity, по Сети прокатилось цунами народного гнева – глупые ош...
Рецензия на Strategy & Tactics: World War 2
Рецензия на Strategy &...
Название Strategy & Tactics: World War II вряд ли кому-то знакомо. Зато одного взгляда на ее скри...
Рецензия на игру Scribblenauts Unlimited
Рецензия на игру Scrib...
По сложившейся традиции в информационной карточке игры мы приводим в пример несколько похожих игр...
Рецензия на игру Walking Dead: Survival Instinct, The
Рецензия на игру Walki...
Зомби и продукция-по-лицензии — которые и сами по себе не лучшие представители игровой биосферы —...
Обратная связь | RSS | Донейт | Статистика | Команда | Техническая поддержка