apache2ctl: 87: ulimit: hata ayar limiti (İşleme izin verilmiyor)


12

Sunucu düzgün çalışıyor - ya da en azından öyle görünüyor - ama her zaman aşağıdaki hata var:

apache2/usr/sbin/apache2ctl: 87: ulimit: error setting limit (Operation not permitted)

Debian Wheezy'de Apache 2.2.22-9 ile olur.

# apache2ctl configtest

/ usr / sbin / apache2ctl: 87: ulimit: hata ayar sınırı (İşleme izin verilmiyor)
Sözdizimi Tamam

# service apache2 reload

[....] Web sunucusu yapılandırma yeniden yükleniyor: apache2 / usr / sbin / apache2ctl: 87: ulimit: hata ayar limiti (İşleme izin verilmiyor)
. tamam

# service apache2 restart

[....] Web sunucusu yeniden başlatılıyor: apache2 / usr / sbin / apache2ctl: 87: ulimit: hata ayar limiti (İşleme izin verilmiyor)
... bekleme / usr / sbin / apache2ctl: 87: ulimit: hata ayar limiti (İşlem izin verilmez)
. tamam

# service apache2 status

Apache2 çalışıyor (pid 32045).


1
/Etc/security/limits.conf ve /etc/security/limits.d adresinde neler olduğuna bir göz atın. Görünüşe göre APACHE_ULIMIT_MAX_FILES (/ usr / sbin / apache2ctl içinde değişkene bakın) değişkeni bu dosyalardaki sınırdan daha büyük bir değere ayarlanmış.
HUB

Yanıtlar:


16

Bu yardımcı olabilir: - http://ubuntuforums.org/showthread.php?p=11950245#post11950245

sudo service apache2 restart # no errors
service apache2 restart      # errors

Teşekkürler, bunu çoktan gördüm ama yardımcı olmuyor. Sudo kullanmak ya da değil bir şey değişmez, ben de aynı hata var.
Pascal Polleunus

1
Benim için çalıştı! Tamamen unuttum sudo.
ThomasReggi

2
+1 büyü sudoher zaman hile yapar
bisiklet

daha da kötüsü, bunun ortaya çıktığı, ev bilgisayarımda çalıştığı, ancak sunucuda değil, docker kurulumuna sahibim .. aralarında hiçbir fark olmayan kapta ... bana bir anlam ifade etmiyor
süper kahraman

Burada aynı süper kahraman. Ayrıca, yeniden başlatma benim için sudo ile veya sudo olmadan çalışmaz. Stop'u kullanmak ve sonra sudo olmadan başlamak için çalışmalıyım.
Shardj

5

Sorun / usr / sbin / apache2ctl kaynağından kaynaklanıyor (Debian'da). Bunu kontrol et:

~$ grep ULIMIT /usr/sbin/apache2ctl
ULIMIT_MAX_FILES="${APACHE_ULIMIT_MAX_FILES:-ulimit -n 8192}"
if [ "x$ULIMIT_MAX_FILES" != "x" ] ; then
    $ULIMIT_MAX_FILES

Burada izin verilen açık dosya sayısını 8192'ye ayarlıyor. Ya da sizin durumunuzda denemeyi ve başarısız olmayı.

Bu nedenle apache2ctl bunu yaparken bir hata almamak için, aşağıdaki iki satırı ekleyerek /etc/security/limits.conf dosyasında sisteminizin ayarlarını değiştirin:

*               soft    nofile          8192
*               hard    nofile          8192

Gerekenden daha fazla artırmadım (8192) çünkü başka ne etkileyeceğini bilmiyorum. Ancak bu uyarıdan kurtulur.

Bundan sonra sisteminizi yeniden başlatmanız gerekip gerekmediğinden emin değilsiniz, çünkü aşina olmadığım ulimitlere dinamik bir eleman var. Ancak mevcut ulimit dosyalarınızın sayısını öğrenmek için yeterince kolayca test edebilirsiniz:

ulimit -n

Nerede bulduğumu okumak isteyebilirsiniz: stackoverflow - ayar ulimit


Apache sınırını nasıl tersine çevirip azaltabilirim?
eri0o

Yanıtta gönderdiğim komut dosyasının apache tarafından yüklenen apache2ctl komut dosyasından doğrudan çıktığını görünce, erişim hakkına sahip olduğunuzu varsayarak ve tekrarlamak istediğinizi varsayarak, bu komut dosyasına gitmeniz ve değiştirmeniz gerekir. Her Apache güncellemesinde aksiyon.
Adam

2

1. ana makinenizdeki ulimit değerini kontrol edin ve değiştirin . Değerleri / etc / profile dosyasına ekleyin ve ardından yürürlüğe girmesini sağlayın.

ulimit -u 10240
ulimit -n 8192     #This configuration is what we most needed
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited

source /etc/profile

veya şunları yapabilirsiniz:

sudo sh -c 'printf "\nulimit -HSn 999999\n" >> /etc/sysconfig/docker'

2. Docker hizmetini yeniden başlatın ve yapılandırmanın etkili olmasını sağlayın.

sudo service docker restart

3. ulimit kapta test edin.

ulimit -n

Bu benim test sonucum!

İpuçları: Belki de komutu aşağıdaki gibi deneyebilirsiniz (önkoşul: ana makinedeki ulimit 8192'den büyük olmalıdır), ancak başarısız oldum .

docker run --privileged -it -p xxxx:80 --ulimit data=8192 linode/lamp /bin/bash

$ ulimit -n 8192bana verir-bash: ulimit: open files: cannot modify limit: Operation not permitted
Shardj
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.