apache2ctl: 87: ulimit: त्रुटि सेटिंग सीमा (ऑपरेशन की अनुमति नहीं है)


12

सर्वर ठीक चल रहा है - या कम से कम ऐसा लगता है - लेकिन हमेशा निम्न त्रुटि होती है:

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

यह डेबियन व्हीज़ी पर अपाचे 2.2.22-9 के साथ होता है।

# apache2ctl configtest

/ usr / sbin / apache2ctl: 87: ulimit: त्रुटि सेटिंग सीमा (ऑपरेशन की अनुमति नहीं)
सिंटैक्स ठीक है

# service apache2 reload

[....] वेब सर्वर कॉन्फ़िगरेशन को फिर से लोड करना: apache2 / usr / sbin / apache2ctl: 87: ulimit: त्रुटि सेटिंग सीमा (ऑपरेशन की अनुमति नहीं)
। ठीक

# service apache2 restart

[....] पुन: आरंभ करना वेब सर्वर: apache2 / usr / sbin / apache2ctl: 87: ulimit: त्रुटि सेटिंग, सीमा (ऑपरेशन नहीं की अनुमति दी)
... / usr / sbin / apache2ctl इंतजार कर: 87: ulimit: त्रुटि सेटिंग, सीमा (ऑपरेशन अनुमति नहीं है)
। ठीक

# service apache2 status

Apache2 चल रहा है (pid 32045)।


1
आपके पास /etc/security/limits.conf और /etc/security/limits.d में क्या है, इस पर एक नज़र डालें। ऐसा लगता है कि आपके पास APACHE_ULIMIT_MAX_FILES है (इसे / usr / sbin / apache2ctl में देखें) चर उस फ़ाइल में सीमा से कुछ बड़ा है।
HUB

जवाबों:


16

यह मदद कर सकता है: - http://ubuntuforums.org/showthread.php?p=11950245#post11950245

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

धन्यवाद, मैंने पहले ही देखा था लेकिन यह मदद नहीं करता है। सुडो का उपयोग करना या कुछ भी नहीं बदलता है, मेरे पास एक ही त्रुटि है।
पास्कल पोलेयूनस

1
मेरे लिए काम किया! पूरी तरह से भूल गया sudo
थॉमसरेजी १५'१२

2
+1 मैजिक sudoहमेशा चाल करता है
साइकिल

सबसे बुरी बात यह है कि मेरे पास डॉकटर सेटअप है जहां यह आकर्षक है, मेरे होम कंप्यूटर पर काम करता है, लेकिन सर्वर पर नहीं .. कंटेनर में उनके बीच कोई अंतर नहीं है ... मुझे इससे कोई मतलब नहीं है
सुपरहीरो

वही यहाँ सुपरहीरो। इसके अलावा, पुनरारंभ मेरे लिए या sudo के बिना काम नहीं करता है। मुझे स्टॉप का उपयोग करना है तो बिना सूडो के इसे काम करने के लिए शुरू करें।
शारज

5

समस्या / usr / sbin / apache2ctl (डेबियन पर) से उपजी है। इसकी जांच - पड़ताल करें:

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

यहां यह 8192 को अनुमति दी गई खुली फाइलों की संख्या निर्धारित कर रहा है। या आपके मामले में असफल हो रहा है।

इसलिए जब Apache2ctl ऐसा करता है तो त्रुटि होने से बचने के लिए, इन दो पंक्तियों को जोड़कर /etc/security/limits.conf फ़ाइल में अपने सिस्टम की सेटिंग समायोजित करें:

*               soft    nofile          8192
*               hard    nofile          8192

मैंने इसे आवश्यकता से अधिक नहीं बढ़ाया (8192) क्योंकि मुझे नहीं पता कि इसका और क्या प्रभाव पड़ेगा। हालाँकि इससे चेतावनी से छुटकारा मिल जाता है।

निश्चित नहीं है कि आपको उसके बाद अपने सिस्टम को रिबूट करने की आवश्यकता होगी, क्योंकि ulimits के लिए एक गतिशील तत्व है, जिससे मैं परिचित नहीं हूं। हालाँकि आप आसानी से यह पता लगाने के लिए पर्याप्त परीक्षण कर सकते हैं कि आपकी वर्तमान फाइलों की संख्या क्या है:

ulimit -n

आप यह पढ़ना चाहते हैं कि मुझे यह कहाँ मिला: स्टैकओवरफ़्लो - अलिमेट की स्थापना


मैं अपाचे की सीमा को उल्टा और कम कैसे करूंगा?
eri0o

यह देखकर कि मैंने जो स्क्रिप्ट उत्तर में पोस्ट की है वह अपाचे 2ctl स्क्रिप्ट से प्रत्यक्ष है जो अपाचे द्वारा स्थापित है, फिर आपको उस स्क्रिप्ट फ़ाइल पर जाना होगा और इसे बदलना होगा, यह मानते हुए कि आपके पास पहुंच सही है और यह मानकर कि आप दोहराने को तैयार हैं हर अपाचे उन्नयन के साथ कार्रवाई।
एडम

2

1. अपने मेजबान मशीन में ulimit के मूल्य को जाँचें और संशोधित करें । फ़ाइल / etc / प्रोफ़ाइल में मान जोड़ें फिर इसे प्रभावी बनाएं।

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

या आप कर सकते हो:

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

2.Restart docker सेवा और प्रभावी होने के लिए विन्यास करें।

sudo service docker restart

3. कंटेनर में ulimit का परीक्षण करें।

ulimit -n

यह मेरा परीक्षा परिणाम है!

टिप्स: हो सकता है कि आप नीचे दिए गए कमांड को भी आज़मा सकते हैं (शर्त: होस्ट मशीन में ulimit 8192 से बड़ा होना चाहिए), लेकिन मैं असफल रहा हूं

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

$ ulimit -n 8192मुझे देता है-bash: ulimit: open files: cannot modify limit: Operation not permitted
Shardj
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.