Co się stało apache'owi?

Jakub Bogusz qboosh at pld-linux.org
Wed Jun 22 16:45:51 CEST 2011


On Wed, Jun 22, 2011 at 08:17:37AM +0200, Jacek Osiecki wrote:
> On Thu, 16 Jun 2011, Jacek Osiecki wrote:
> 
> > On Mon, 13 Jun 2011, Arkadiusz Miskiewicz wrote:
> >> > > >  Już drugi raz widzę coś takiego:
> >> > > >  Rano, najprawdopodobniej tuż po logrotate, apache zgłupiał i nagle
> >> > > >  zaczął siać do error_log milionami komunikatów:
> >> > > > 
> >> > > >  select() error: Invalid argument
> 
> >>  Zrób strace, poznasz deskryptor na którym ten select() się odbywa, zobacz
> >>  lsof czy czymś podobnym czego dotyczy ów deskryptor - może tą drogą dojdziesz
> >>  do  sedna (to może być którykolwiek moduł apacza).
> 
> No dobra, znowu się stało. Tak samo jak ostatnio, czyli w logu apache'a 
> jest info o restarcie a potem już tylko cała seria:
> 
> select() error: Invalid argument
> 
> Nie wiem czy apache działał, bo jak się obudziłem to już nie miał szans 
> działać - powyższy komunikat zajął pozostałe 36GB /var i wszystko leżało.
> 
> Wszystkie procesy apache'a poza jednym były <defunct>
> 
> Po zrobieniu na nim strace zobaczyłem generowane xset linii na sekundę:
> select(1088, [1024 1025 1087], NULL, NULL, {9223372036854775811, 0}) = -1 
> EINVAL (Invalid argument)

timeout jest błędny i to jest przyczyna EINVAL, ale kto tak skrzywdził
tę wersję Apache'a (która to w ogóle)?

Dlaczego używany jest select(), a nie epoll (lub przynajmniej poll)
i dlaczego numery deskryptorów przekraczają standardowe FD_SETSIZE?


-- 
Jakub Bogusz    http://qboosh.pl/


More information about the pld-devel-pl mailing list