hirthwork 08.01.2013 14:49 mcabber

Смотришь код nginx — после каждой аллокации проверка того, что не память не кончилась. Смотришь код Apache HTTP Server — аллоцируем память и сразу хуярим в неё данные, segfault — лучший способ оповестить пользователя, что что-то пошло не так

1. Crazy_Owl 08.01.2013 14:51 JasmineIM

enterprise-level scalable stable robust code

2. hirthworkCrazy_Owl /1 08.01.2013 14:53 mcabber

ога. радует что хоть какой-то подход Сысоев не стал перенимать из httpd

3. Sectoid 08.01.2013 14:54 mobility

ну, в чем-то возможно apache и правы: если кончилась память — это обычно означает скорые похороны. впрочем, не везде и не всегда, согласен.

4. hirthworkSectoid /3 08.01.2013 14:57 mcabber

если кончилась память и это произошло по вине сервера, то можно тупо дропать входящие запросы (или же отдавать 50x) покуда не рассосутся запросы, которые сожрали всю память. в этом случае хотя бы часть запросов продолжит нормально обрабатываться, а когда пиковая нагрузка спадёт — запросы продолжат обрабатываться как ни в чём ни бывало.
к сожалению, nginx не поддерживает трединговую модель работы и использовать мне придётся httpd

5. Sectoidhirthwork /4 08.01.2013 14:59 mobility

в зависимости от того, нужно ли нам для ухода в "дропающее" состояние выделять память или нет. Ежели не нужно — да, вполне можно. Ну и от того, сколько памяти не удалось выделить: если полметра, это одно, если 40 байт — плохи дела.

6. hirthworkSectoid /5 08.01.2013 15:02 mcabber

для ухода в дропающее состояние память не нужна. у тебя после accept() есть fd, если не смог выделить память, то просто делаешь write(fd) со статической строкой «HTTP/1.1 503 Service Unavailable\r
Connection: close\r
\r
» и закрываешь сокет. никакой дополнительной памяти это не потребует и жить в таком состоянии сервер может пока опасность не минует

7. hirthworkhirthwork /6 08.01.2013 15:03 mcabber

блджад, в первый раз недоволен тем, что
автоматически на переносы строк заменились

8. Sectoidhirthwork /6 08.01.2013 15:04 mobility

да, так можно. и так стоит делать в идеале, согласен.

9. Like-allhirthwork /7 08.01.2013 15:06 rzkPhone II

У тебя в sayto написано echo -e ?

10. hirthworkLike-all /9 08.01.2013 15:08 mcabber

ну да

11. Like-allhirthwork /10 08.01.2013 15:11 rzkPhone II

Хм. Интересно, а как тогда эканировать бэкслэш? echo -e

12. Like-allLike-all /11 08.01.2013 15:11 rzkPhone II

Блядь, я тоже соснул.

Do you really want to delete ?