apache2ctl: 87: ulimit: giới hạn cài đặt lỗi (Không được phép hoạt động)


12

Máy chủ đang chạy tốt - hoặc ít nhất là có vẻ như - nhưng luôn có lỗi sau:

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

Nó xảy ra với Apache 2.2.22-9 trên Debian Wheezy.

# apache2ctl configtest

/ usr / sbin / apache2ctl: 87: ulimit: giới hạn cài đặt lỗi (Không được phép hoạt động)
Cú pháp OK

# service apache2 reload

[....] Đang tải lại cấu hình máy chủ web: apache2 / usr / sbin / apache2ctl: 87: ulimit: giới hạn cài đặt lỗi (Không được phép hoạt động)
. đồng ý

# service apache2 restart

[....] Khởi động lại máy chủ web: apache2 / usr / sbin / apache2ctl: 87: ulimit: giới hạn cài đặt lỗi (Không được phép hoạt động)
... chờ đợi / usr / sbin / apache2ctl: 87: ulimit: giới hạn cài đặt lỗi (Hoạt động không được phép)
. đồng ý

# service apache2 status

Apache2 đang chạy (pid 32045).


1
Hãy xem những gì bạn có trong /etc/security/limits.conf và /etc/security/limits.d. Có vẻ như bạn có biến APACHE_ULIMIT_MAX_FILES (xem nó trong / usr / sbin / apache2ctl) được đặt thành một cái gì đó lớn hơn giới hạn trong các tệp đó.
HUB

Câu trả lời:


16

Điều này có thể giúp: - http://ubuntuforums.org/showthread.php?p=11950245#post11950245

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

Cảm ơn, tôi đã thấy điều đó nhưng nó không giúp được gì. Sử dụng sudo hoặc không thay đổi bất cứ điều gì, tôi có cùng một lỗi.
Pascal Polleunus

1
Đã làm cho tôi! Hoàn toàn quên mất sudo.
ThomasReggi

2
Phép thuật +1 sudoluôn luôn thực hiện trò lừa
xe đạp

thậm chí tệ nhất, tôi đã thiết lập docker trong đó ứng dụng này đang hoạt động, hoạt động trên máy tính ở nhà của tôi, nhưng không phải trên máy chủ .. trong container không có sự khác biệt giữa chúng ... không có ý nghĩa gì với tôi
siêu anh hùng

5

Vấn đề bắt nguồn từ / usr / sbin / apache2ctl (trên Debian). Kiểm tra xem nó:

~$ 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

Ở đây, nó đang đặt số lượng tệp đang mở được phép là 8192. Hoặc cố gắng và thất bại, trong trường hợp của bạn.

Vì vậy, để tránh gặp lỗi khi apache2ctl làm điều đó, hãy điều chỉnh cài đặt hệ thống của bạn trong tệp /etc/security/limits.conf bằng cách thêm hai dòng sau:

*               soft    nofile          8192
*               hard    nofile          8192

Tôi đã không tăng nó lên nhiều hơn mức cần thiết (8192) vì tôi không biết những gì nó sẽ tác động. Tuy nhiên điều này được thoát khỏi cảnh báo.

Không chắc chắn nếu bạn sẽ cần phải khởi động lại hệ thống của mình sau đó, bởi vì có một yếu tố động đối với các lỗ hổng mà tôi không quen thuộc. Tuy nhiên, bạn có thể kiểm tra đủ dễ dàng để tìm ra số tập tin ulimit hiện tại của bạn là gì:

ulimit -n

Bạn có thể muốn đọc nơi tôi tìm thấy nó: stackoverflow - thiết lập ulimit


Làm thế nào tôi có thể làm ngược lại và giảm giới hạn Apache?
eri0o

Thấy rằng tập lệnh tôi đã đăng trong câu trả lời là trực tiếp từ tập lệnh apache2ctl được cài đặt bởi apache, sau đó bạn sẽ phải chuyển đến tập tin tập lệnh đó và thay đổi nó, giả sử bạn có quyền truy cập và giả sử bạn sẵn sàng lặp lại hành động với mọi nâng cấp của Apache.
Adam

2

1.Kiểm tra và sửa đổi giá trị của ulimit trong máy chủ của bạn. Thêm các giá trị trong tệp / etc / profile sau đó làm cho nó có hiệu lực.

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

hoặc bạn có thể:

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

2. Khởi động lại dịch vụ docker và làm cho cấu hình có hiệu quả.

sudo service docker restart

3.Test các ulimit trong container.

ulimit -n

Đây là kết quả kiểm tra của tôi!

Mẹo: Có thể bạn cũng có thể thử lệnh như dưới đây (điều kiện tiên quyết: ulimit trong máy chủ phải lớn hơn 8192), nhưng tôi đã thất bại .

docker run --privileged -it -p xxxx:80 --ulimit data=8192 linode/lamp /bin/bash
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.