Apache HTTP Sunucusu Sürüm 2.4

Apache > HTTP Sunucusu > Belgeleme > Sürüm 2.4 > Sanal Konaklar

# 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``

## 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.