Dosya Tanıtıcı Sınırları - Apache HTTP Sunucusu Sürüm 2.4

Apache Server 2.4

Apache HTTP Sunucusu Sürüm 2.4

<-

Dosya Tanıtıcı Sınırları

Çok büyük sayıda sanal konak kullanıyorsanız ve bunların her biri için ayrı günlük kayıtları tutuyorsanız, Apache dosya tanıtıcılarını tüketebilir. Apache tarafından, dahili olarak 10-20 dosya tanıtıcıya ek olarak her hata günlüğü için bir ve her diğer günlük kaydı için bir dosya tanıcı kullanılır. Unix işletim sisteminde dosya tanıtıcıların sayısı süreç başına 64 taneyle sınırlıdır ve gerekirse donanıma bağlı olarak arttırılabilir.

Apache gerektiğinde bu sınırı kendisi arttırmaya çalışırsa da bu her zaman mümkün olmaz. Şöyle ki:

  1. Sisteminiz setrlimit() sistem çağrısını sağlamıyordur.
  2. Sisteminizde setrlimit(RLIMIT_NOFILE) çağrısı hiçbir işe yaramıyordur (örneğin, Solaris 2.3).
  3. Dosya tanıtıcılarının sayısı donanıma bağlı olarak daha fazla arttırılamıyordur.
  4. Sisteminiz dosya tanıtıcı sayısını başka sınırlara bağlı kılmıştır: örneğin stdio akımları ile ilgili sınır, dosya tanıtıcı sayısının 256’nın altında ollmasını gerektiriyordur (Solaris 2).

Böyle sorunlar karşısında yapabilecekleriniz:

  • Ana günlük dosyaları hariç, <VirtualHost> bölümlerinde günlük dosyası belirtmeyerek günlük dosyası sayısını düşürürsünüz. (Bunun nasıl yapılacağını öğrenmek için Günlük kayıtlarının ayrıştırılması bölümüne bakınız.)
  • Sisteminizde serbest dosya tanıtıcı sayısı 1-2 civarına düşerse Apache’yi aşağıdaki gibi bir betikle yeniden çalıştırarak dosya tanıtıcı sayısını arttırabilirsiniz:

    #!/bin/sh
    ulimit -S -n 100
    exec httpd

top

Günlük kayıtlarının ayrıştırılması

Günlük dosyalarını çok sayıda sanal konak için ortak olarak kullanıyorsanız, sanal konaklar için istatistiksel çözümlemeler yapmak amacıyla sırası geldiğinde bunları ayrıştırabilirsiniz. Bu işlem aşağıda anlatıldığı gibi yapılabilir.

İlk iş olarak, sanal konak bilgilerini günlük girdilerine eklemeniz gerekir. Bu işlem, LogFormat yönergesi ve %v biçem değişkeni ile yapılabilir. Günlük girdisi biçem dizgesinin başına bunu ekleyiniz:

LogFormat "%v %h %l %u %t \"%r\" %>s %b" vhost
CustomLog logs/multiple_vhost_log vhost

Bu yapılandırma ile her günlük kaydının başında sanal konağın ServerName yönergesine belirtilen ismi eklenir. (Günlük dosyalarınızın kişiselleştirilmesi ile ilgili daha fazla bilgi için mod_log_config belgesine bakınız.)

Günlük dosyanızdaki kayıtları bileşenlere göre gruplamak isterseniz split-logfile programını kullanabilirsiniz. Bu programı Apache dağıtımının support dizininde bulabilirsiniz.

Programı aşağıdaki gibi çalıştırın:

split-logfile < /logs/multiple_vhost_log

Bu programı sanal konaklar için tuttuğunuz günlük dosyasının ismini argüman olarak belirterek çalıştırdığınızda o dosyadaki kayıtlardan her sanal konak için ayrı bir günlük dosyası (konakadı.log) üretilir.