हर बार logrotate
अपाचे / 2.4.7 (उबंटू) एक सेग गलती का अनुभव करता है और पुनः आरंभ नहीं होता है:
[Wed Sep 10 06:35:54.266018 2014] [mpm_event:notice] [pid 20599:tid 140630283466624] AH00493: SIGUSR1 received. Doing graceful restart
[Wed Sep 10 06:35:54.885118 2014] [core:notice] [pid 20599] AH00060: seg fault or similar nasty error detected in the parent process
मेरी अपाचे लोगो की पटकथा इस प्रकार है:
/var/log/apache2/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/usr/sbin/apachectl graceful
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
/srv/apache/log/*.log {
daily
missingok
rotate 52
compress
delaycompress
notifempty
create 640 root adm
sharedscripts
postrotate
/usr/sbin/apachectl graceful
endscript
prerotate
if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
run-parts /etc/logrotate.d/httpd-prerotate; \
fi; \
endscript
}
मैं में डिफ़ॉल्ट लॉग रखते हैं /var/log/apache2
, लेकिन मैं vhost विशिष्ट लॉग रखते हैं में (इस सर्वर पर होस्ट तीन अलग अलग vhosts के लिए) /srv/apache/log
निर्देशिका (जैसे mysite1_error.log
, mysite1_access.log
, mysite2_error.log
, mysite2_access.log
....)।
के प्रासंगिक भागों /etc/apache2/apache.conf
:
#/etc/apache2/apache.conf
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel trace8 # I set to try and get more info about this problem.
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
जहां export APACHE_LOG_DIR=/var/log/apache2$SUFFIX
। मेरे vhost conf फ़ाइलों में, जैसे कि
/etc/apache2/sites-enabled/mysite1.conf
मेरे पास है:
#/etc/apache2/sites-enabled/mysite1.conf
LogLevel debug
ErrorLog /srv/apache/log/mysite1_error.log
CustomLog /srv/apache/log/mysite2_access.log combined
और अन्य साइटों के लिए समान है।
किसी को भी पता है कि क्यों लोग इस दुर्घटना का कारण बन रहा है?
एक और चीज़:
मूल रूप से logrotate को मूल रूप से मजबूर करना:
logrotate -v -f /etc/logrotate.d/apache2
सेग फॉल्ट का कारण नहीं बनता है, लेकिन मुझे पता है कि यह लॉगोटेट है जैसा कि मैंने समय (साप्ताहिक, दैनिक) के साथ खेलने की कोशिश की है और एसईजी गलती हमेशा ठीक वैसी ही होती है, जैसे लॉग केवल घुमाए जा रहे हैं।
मांग पर कैसे पुन: पेश करें
# Set a crontab to run each minute (simulating cron.daily run of logrotate)
crontab -e
*/1 * * * * root /usr/sbin/logrotate -v -f /etc/logrotate.d/apache2 > /home/myuser/logrotate.log 2>&1
आखिरकार
अगर मैं सेग फॉल्ट /srv/apache/log/*.log
में रोटेशन ब्लॉक पर टिप्पणी करता हूं, /etc/logrotate.d/apache
तो यह भी नहीं होता है।
/usr/sbin/apachectl graceful
सीएमडी लाइन पर मैन्युअल रूप से कोई समस्या नहीं होती है (यह भी ध्यान दें कि यह लाइन मूल रूप से थी /etc/init.d/apache2 reload > /dev/null
लेकिन एसईजी गलती होने के बाद, मैंने apachectl
ऑनलाइन पढ़ी गई सलाह पर बदल दिया , जाहिर है कि इससे चीजें ठीक नहीं हुईं)। LogLevel पहले से ही विश्व स्तर पर उच्चतम संभव है, में trace8
सेट हैapache.conf
फ़ाइल है।
/etc/logrotate.d/httpd-prerotate
मौजूद नहीं है।
/usr/sbin/apachectl graceful
लॉगगोट द्वारा जारी किए जाने पर सेगफॉल्ट हो रहा है, लेकिन मैन्युअल रूप से जारी किए जाने पर नहीं? अजीब
/usr/sbin/apachectl graceful
है कि अपराधी है (सिद्धांत स्क्रिप्ट में /etc/logrotate.d/httpd-prerotate भी उम्मीदवार हैं)। क्या आप/usr/sbin/apachectl graceful
मैन्युअल रूप से चलाकर पुष्टि कर सकते हैं ? जब अपाचे की वैश्विक त्रुटि (या वैश्विक syslog) में ऐसा होता है, तो कोई और संकेत होता है, हो सकता है कि जब आप LogLevel को न केवल <VirtualHost> बल्कि वैश्विक स्तर पर बढ़ाएं?