lighttpd ne kadar ‘light’tır?
Bir süredir bu sunucu da dahil olmak üzere Debian üzerinde lighttpd kullanmaktayım. lighttpd ismi gibi kendisi de gerçekten light bir web sunucusu. FastCGI uygulaması olarak çalışan PHP ile de, Apache’den kat kat ‘light’ olduğunu söyleyebilirim. Özellikle bellek kullanımı lighttpd’i eşsiz kılıyor. Eğer fazla belleği bulunmayan bir sunucunuz varsa hiç düşünmeden lighttpd kullanın.
lighttpd’nin özelliklerine gelecek olursak boyundan büyük bir çok özelliği bulunmakta. Proxy modülünden, Apache’de sıkça kullanılan rewrite modülüne kadar bir çok modül bulunmakta. Modül listesini ve ayarları bu linkteki sayfada görebilirsiniz.
Bunun yanında, Apache (apache-mpm-prefork) gibi her seferinde yeni bir process yaratmayıp threadler ile çalışıyor. Böylece yine bellekten tasarruf sağlanmış olunuyor.
lighttpd orijinal olarak c10k (bir sunucuda 10000 paralel bağlantıyı idare etmek) problemi üzerine yazılmış bir web sunucusu.
1 MB’dan küçük olan bu devin popularitesi gün geçtikçe artıyor. Netcraft Ocak 2009 raporuna göre, 3 milyon site tarafından kullanılan lighttpd, en çok kullanılan 5. web sunucusu özelliğini taşıyor.
lighttpd vazgeçilmezi FastCGI
Biraz da lighttpd’nin vazgeçilmezi FastCGI‘ye değinmek istiyorum.
Normalde CGI uygulamaları gelen isteğe göre çalışırlar. Örneğin siz bir CGI uygulamasına istek gördüğünüzde, bilgisayar onu yeni bir uygulama olarak başlatır ve sizin isteğiniz işlendikten sonra çıktılar size ulaştırılır. CGI uygulamalarının mantığı budur.
FastCGI ise programın bir kez çalıştırılıp belleğe yüklenmesini sağlıyor. Böylece program her seferinde çalışmak zorunda kalmıyor ve bu da performans ve kaynak kullanımı artışı sağlıyor. FastCGI orijinal olarak C dili ile yazılmış olsa da, bir çok dile implementasyonu bulunmakta. lighttpd FastCGI desteği sayesinde, fastcgi uygulamalarınızı çalıştırabilir.
Özellikle yüksek trafik gerektiren uygulamalar FastCGI ile programlanırsa, performans artışı yaşanmaması içten bile değildir.
Bunun yanında bir FastCGI uygulamasında en önemki faktör bellek kullanımıdır. Eğer FCGI uygulamanızda bellek açıkları (memory leak) var ise, bellek her istekte biraz daha şişecektir. Bu nedenle bir FCGI uygulamasında bellek kontrolü çok önemlidir.