আমাদের মাঝে একটি খুব বড় এনগিনেক্স ক্যাশে (গিগাবাইট) রয়েছে যা আমাদের মাঝে মাঝে মুছতে হবে। আমি একটি স্ক্রিপ্ট তৈরি করেছি যা তাত্ক্ষণিকভাবে ক্যাশে সাফ করে দেয় (যতক্ষণ না এনগিনেক্স সম্পর্কিত) ততক্ষণে ডিস্ক আই / ও-এর মূল অ্যাপ্লিকেশন না খেয়ে ক্যাশে ডিরেক্টরিটি সরিয়ে ফেলে।
সংক্ষেপে:
- নতুন স্থানে ক্যাশে ফোল্ডারটি সরান (একই ফাইল সিস্টেমে!) (এটি কোনও উন্মুক্ত ফাইল বিবরণকারীকে ব্যাহত করে না)
- খালি খালি মূল ক্যাশে ফোল্ডারটি পুনরায় তৈরি করুন
- এনগিনেক্স পুনরায় লোড করুন ( ক্রেফুল রিলোড, যেখানে এনগিনেক্স প্রবীণ কর্মীদের অগ্রগতির অনুরোধগুলি শেষ করতে দেয়)
- পুরানো ক্যাশেড ডেটা সরান
স্ক্রিপ্টটি এখানে উবুন্টু 16.04 এলটিএস অনুসারে তৈরি করা হয়েছে এবং এখানে ক্যাশে রয়েছে /mnt/nginx-cache
:
#!/bin/bash
set -e
TMPCACHE=`mktemp --directory --tmpdir=/mnt nginx-cache-XXXXXXXXXX`
TMPTEMP=`mktemp --directory --tmpdir=/mnt nginx-temp-XXXXXXXXXX`
# Move the old cache folders out of the way
mv /mnt/nginx-cache $TMPCACHE
mkdir -p /mnt/nginx-cache
chmod -R 775 /mnt/nginx-cache
chown www-data:www-data /mnt/nginx-cache
mv /mnt/nginx-temp $TMPTEMP
mkdir -p /mnt/nginx-temp
chmod -R 775 /mnt/nginx-temp
chown www-data:www-data /mnt/nginx-temp
# Tell Nginx about the new folders.
service nginx reload
# Create an empty folder.
rm -rf /mnt/empty
mkdir -p /mnt/empty
# Remove the old cache and old temp folders w/o thrashing the disk...
# See http://serverfault.com/questions/546177/how-to-keep-subtree-removal-rm-rf-from-starving-other-processes-for-disk-i
# Note: the `ionice` and `nice` may not actually do much, but why not?
ionice -c 3 nice -19 rsync -a --delete /mnt/empty/ $TMPCACHE
ionice -c 3 nice -19 rsync -a --delete /mnt/empty/ $TMPTEMP
rm -rf $TMPCACHE
rm -rf $TMPTEMP
rm -rf /mnt/empty
এবং যদি এটি সহায়ক হয় তবে আমাদের ব্যবহৃত Nginx কনফিগারেশনটি এখানে রয়েছে:
upstream myapp {
server localhost:1337 fail_timeout=0;
}
proxy_cache_path /mnt/nginx-cache/app levels=2:2:2 keys_zone=app_cache:100m inactive=1y max_size=10g;
proxy_temp_path /mnt/nginx-temp/app;
server {
listen 4316 default;
server_name myapp.com;
location / {
proxy_pass http://appserv;
proxy_cache app_cache;
proxy_cache_valid 200 1y;
proxy_cache_valid 404 1m;
}
}
proxy_cache
?