প্রতিবার logrotate
অ্যাপাচি / ২.৪..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
। আমার ভোস্ট কনফ ফাইলগুলিতে যেমন
/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 -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
আমি অনলাইনে পড়ার পরামর্শে পাল্টেছি, স্পষ্টত এটি জিনিসগুলি ঠিক করে নি)। লগলভিলটি ইতিমধ্যে বিশ্বব্যাপী সর্বাধিক সম্ভব, ফাইলে 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
নিজে চালিয়ে নিশ্চিত করতে পারবেন ? অ্যাপাচি-র গ্লোবাল ত্রুটিমুক্ত (বা গ্লোবাল সিসলগ) এ যখন ঘটে তখন কি আরও কোনও ইঙ্গিত পাওয়া যায়, আপনি যখন কেবল <ভার্চুয়ালহস্ট> এর মধ্যেই নয় বিশ্বব্যাপী লগলভিল বাড়িয়ে তোলেন?