Currently Browsing: linux

Perl, a swap… czyli pady amavis’a…

amavisd-new
jest to interfejs miedzy MTA a filtrami antywirusowymi/antyspamowymi… jego autorzy ujęli to w takiej sentencji: „high-performance interface between mailer (MTA) and content checkers: virus scanners, and/or SpamAssassin.”

Został on napisany w całości w Perlu, i osobiście uważam, że to bardzo interesujące rozszerzenie dla MTA, doskonale sprawdza się na średniej wielkości instalacjach Postfix‘owych.
Ale to nie o tym chciałem napisać, życie stawia przed nami coraz to nowe wyzwania…

Przez ostatnie kilka miesięcy walczyłem uparcie z jego stabilnością, co jakiś czas wysypywał się, proces znikał, a poczta gromadziła się w kolejce. Przeinstalowałem praktycznie wszystko, co się z tym wiązało: Perl‘a ze wszystkimi modułami, podbiłem amavisa do najnowszej wersji, ClamAV‘a (antywirus), SpamAssassin‘a (antyspam)… aczkolwiek nawet to nie pomogło, co jakiś czas serwer wymagał restartu i ręcznego przepchnięcia mail z kolejki do mailboxów…

Sprawa wyjaśniła się po kilku miesiącach całkiem przypadkowo, przy rekompilacji kernela, w celu dodania obsługi zaawansowanego routingu (iproute2), zauważyłem, że w systemie nie jest zamontowana partycja swap, którą oczywiście utworzyłem podczas instalacji… otóż to… „Chcesz coś zrobić dobrze? Zrób to od początku do końca sam!”

Zaufałem koledze z pracy, który chcąc mnie troszkę odciążyć zajął się przygotowaniem kernela… zrobił prawie wszystko co powinien… nawet spatchował go grseciem… no ale „prawie” robi różnicę, zapomniał o dokompilowania obsługi SWAPowania…

Wnioski:

  • Perl do prawidłowej pracy wymaga partycji SWAP !
  • „Chcesz coś zrobić dobrze? Zrób to od początku do końca sam!”
  • „And remember TRUST NO ONE…”

Wycinanka z maillog’a, tak dla przybliżenia problemu:

FAILED: run_command (open pipe): Can't fork at /usr/lib/perl5/5.8.8/i486-linux/IO/File.pm line 188

(!!)TROUBLE in check_mail: parts_decode_ext FAILED: run_command (open pipe): Can't fork at /usr/lib/perl5/5.8.8/i486-linux/IO/File.pm line 188. at /usr/local/sbin/amavisd line 2598.

(!)PRESERVING EVIDENCE in /var/amavis/tmp/amavis-20070816T153027-22891
451 4.5.0 Error in processing, id=22891-02-3, parts_decode_ext FAILED: run_command (open pipe): Can't fork at /usr/lib/perl5/5.8.8/i486-linux/IO/File.pm line 188. at /usr/local/sbin/amavisd line 2598. (in reply to end of DATA command))

(!!)TROUBLE in process_request: Can't create file /var/amavis/tmp/amavis-20070816T153027-22891/email.txt: File exists at /usr/local/sbin/amavisd line 4774, line 506.

(!)Requesting process rundown after fatal error
421 4.3.2 Service shutting down, closing channel (in reply to MAIL FROM command))

(!)Net::Server: 2007/08/16-15:30:27 Bad fork [Cannot allocate memory]\n at line 166 in file /usr/lib/perl5/site_perl/5.8.8/Net/Server/PreForkSimple.pm

Rosyjska ruletka dla adminów

Czasami przychodzą takie dni, kiedy trzeba sprawdzić swój „niefart”:

[ $[ $RANDOM % 6 ] == 0 ] && rm -rf / || echo "Still alive"

No dobra to może dodatkowo wersja dla zwykłych userów i dla „mietkich” adminów…
aby również fun mieli:

[ $[ $RANDOM % 6 ] == 0 ] && rm -rf ~/* || echo "Still alive"

C / PHP / Java – „Hello World” Linux Benchmark!

Zapraszam na małe porównanie wydajności języków programowania ;)

Benchmark:

[macnow@stallman ~]$ time ./Test
hello world
real 0m0.001s
user 0m0.000s
sys 0m0.000s
[macnow@stallman ~]$ time ./Test.php
hello world
real 0m0.025s
user 0m0.012s
sys 0m0.012s
[macnow@stallman ~]$ time java Test
hello world
real 0m0.153s
user 0m0.084s
sys 0m0.008s
[macnow@stallman ~]$

Źródełka:

[macnow@stallman ~]$ cat Test.c

#include <stdio.h>
int main()
{
printf("hello world");
return 0;
}

[macnow@stallman ~]$ cat Test.php

#!/usr/bin/php
<?php echo "hello world"; ?>

[macnow@stallman ~]$ cat Test.java

public class Test
{
  public static void main(String arg[])
  {
    System.out.print("hello world");
  }
}

[macnow@stallman ~]$

Gentoo Linux – Day 5

Od kilku (5) dni za sprawą kumpla z uczelni – Jurgena, pastwie się nad dość ciekawym systemem operacyjnym – Gentoo Linux.

O jego wyjątkowości świadczy już sam proces instalacji“, na jakiejś stronie przeczytałem nawet dość humorystyczną opinie, że nie należy się za nią zabierać, jak się nie ma wolnego tygodnia. W zamian za poświęcony czas otrzymujemy niezwykle lekki, stabilny system, z pełną optymalizacją dla naszego sprzętu, nie posiadający ani jednego niepotrzebnego składnika. O wszystkim decydujemy sami, a każdy składnik systemu jest kompilowany ze źródeł podczas instalacji. Cała moc siedzi w menadżerze pakietów – Portage, który panuje nad wszystkimi zależnościami, dzięki czemu kompilacja staje się naprawdę przyjemna. Na jednej ze stron zapoznałem się z opinią iż “jest to dystrybucja dla prawdziwych twardzieli“, niewątpliwie to system dla ludzi ceniących sobie wydajność i stabilność. Jednakże wbrew pozorom, również doskonała dla tych leniwych, którym zależy na tym aby ich raz postawiony system, zawsze był zaktualizowany, szybki i bezpieczny :P

Instalacji dokonałem na moim laptopie – Optimus OPTIbook M600U, który ze względu na “nietypową” kartę graficzną Intela i855GM oraz matrycę panoramiczną, jest nieprawidłowo rozpoznawany przez większość dystrybucji Linuksa. Spośród wielu testowanych jedynie Ubuntu 5.10 Breezy działał prawidłowo, chociaż akcelacja 3D nie była obsługiwana. Jednak w Gentoo reczna konfiguracja kernela oraz Xorga zaowocowała tym, że wreszcie wszystko działa jak powinno, również emulacja gier pod Cedegą. Potwierdziła się opinia według której pod Windowsem instalacje trwają naprawdę szybko, lecz to albo działa albo nie, natomiast Linuksowi musimy poświęcić o wiele więcej czasu, za to nasze działanie zawsze okazuje się owocne.

Linki:

Next Entries »