wtorek, 8 lipca 2008

Czy "wydajny" daemon jest zawsze najlepszy?

Internet jest pełen obiegowych opinii dotyczących cech konkretnych aplikacji serwerowych: "ta jest szybsza" a "tamta zużywa mniej pamięci". Rzadko kto zadaje sobie trud by zadać pytanie: w jakich warunkach?

W moim aktualnym miejscu pracy, po poprzednim adminie "odziedziczyłem" serwer pocztowy oparty o Zmailera. Działało to tak sobie: muliło, żarło bydle pamięć i lubiło grymasić. Do tego logi mało czytelne i kiepskie w parsowaniu, dokumentacja niekompletna i więcej niż skromna społeczność, jednym słowem: nędza. Jako że na maszynie stał antyczny Debian, a ja chciałem postawić świeże PLD, nadszedł czas na użycie czegoś zgrabniejszego: Exima. Efekty przeszły moje najśmielsze oczekiwania, na maszynie obsługującej 20-30 tyś. maili na dobę zużycie pamięci spało o połowę (sic!) a load o ok. 30%. Jakiś czas później wy*łem procmalia i wołanie z niego spamassassina, co przyniosło kolejną ulgę maszynie.

Przy okazji trafiłem na pewną ciekawostkę: Zmailer dosyć luźno traktuje RFC 821. Po migracji na Exima okazał się, że nie działa pewna nasza biblioteka wysyłająca pocztę z poziomu PHP. Po bliższym zapoznaniu wyszło na jaw to, że jej twórca (nasz były programista) kalecznie zaimplementował komunikację SMTP, zamiast użyć po prostu Peara. Biblioteka pruła do serwera komunikatami SMTP, nie zwracając uwagi na odpowiedzi serwera, aplikacja wysyłała więc kolejne wiersze, mimo, że serwer mógł chcieć odpowiedzieć kodem 5xx. Tylko dlatego, że Zmailer był bardziej tolerancyjny skrypt mogł działać.

I śmiesznio i straszno.

Brak komentarzy: