国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

一次nginx崩潰事件的實(shí)戰(zhàn)記錄

瀏覽:161日期:2023-03-13 15:37:42
目錄
  • 一、事件描述
  • 二、檢查分析
  • 三、處理
  • 四、附錄
  • 總結(jié)

一、事件描述

2023年春節(jié)復(fù)工第一天,項(xiàng)目組同事反饋說業(yè)務(wù)系統(tǒng)中圖像處理代理Nginx服務(wù)于1月23日發(fā)生崩潰,完成了重啟操作,檢查nginx的日志有如下報(bào)錯(cuò):

2023/01/23 11:07:07 [crit] 3237#3237: *2253009 pwritev() "/var/cache/nginx/client_temp/0000743846"
failed (28: No space left on device),
client: 10.14.32.3, server: localhost,
request: "POST /Test HTTP/1.1", host: "10.14.32.2:5500"

二、檢查分析

1)檢查當(dāng)前文件系統(tǒng)使用情況,未出現(xiàn)分區(qū)使用超限情況,應(yīng)該是nginx重啟后緩存釋放了;

2)檢查nginx配置文件,為對(duì)緩存進(jìn)行額外配置,在編譯時(shí)配置了緩存目錄,如下:

nginx version: nginx/1.16.1
built by gcc 4.4.7 20120313 (Red Hat 4.4.7-4) (GCC)
built with OpenSSL 1.1.1k 25 Mar 2021
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-openssl=/home/software/openssl-1.1.1k --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt=‘-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC’ --with-ld-opt=‘-Wl,-z,relro -Wl,-z,now -pie’

配置項(xiàng)說明:執(zhí)行對(duì)應(yīng)模塊時(shí)nginx所保留的臨時(shí)文件
–http-client-body-temp-path=/var/cache/nginx/client_temp
–http-proxy-temp-path=/var/cache/nginx/proxy_temp
–http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp
–http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp
–http-scgi-temp-path=/var/cache/nginx/scgi_temp

3) 配置Nginx靜態(tài)文件緩存

##代理cache##proxy_connect_timeout 500;#跟后端服務(wù)器連接的超時(shí)時(shí)間_發(fā)起握手等候響應(yīng)超時(shí)時(shí)間proxy_read_timeout 600;#連接成功后_等候后端服務(wù)器響應(yīng)的時(shí)間_即已經(jīng)進(jìn)入后端的排隊(duì)之中等候處理的過程時(shí)間proxy_send_timeout 500;#后端服務(wù)器數(shù)據(jù)回傳時(shí)間_即在規(guī)定時(shí)間內(nèi)后端服務(wù)器必須傳完所有數(shù)據(jù)的時(shí)長(zhǎng)proxy_buffer_size 128k;#代理請(qǐng)求緩存區(qū)_這個(gè)緩存區(qū)間會(huì)保存用戶的頭信息以供Nginx進(jìn)行規(guī)則處理_一般只要能保存下頭信息即可proxy_buffers 4 128k;#同上 告訴Nginx保存單個(gè)用戶的幾個(gè)Buffer最大用多大空間proxy_busy_buffers_size 256k;#如果系統(tǒng)很忙的時(shí)候可以申請(qǐng)更大的proxy_buffers 官方推薦*2proxy_temp_file_write_size 128k;#proxy緩存臨時(shí)文件的大小proxy_temp_path /usr/local/nginx/temp;#用于指定本地目錄用來緩沖較大的代理請(qǐng)求的目錄,如果編譯配置了--http-proxy-temp-path,也可以采取默認(rèn)proxy_cache_path /usr/local/nginx/cache levels=1:2 keys_zone=cache_proxy:200m inactive=1d max_size=30g;#設(shè)置web緩存區(qū)名為cache_proxy,內(nèi)存緩存空間大小為200M,自動(dòng)清除超過1天沒有被訪問過的緩存數(shù)據(jù),硬盤緩存空間大小30g;levels=1:2定義目錄深度,并且第一層目錄為1個(gè)字符,第二層目錄為2個(gè)字符#這里配置的需要緩存的靜態(tài)資源后綴名location ~* “\.(jpg|jpeg|png|gif|html|css|js|woff2|woff|map)?$” {proxy_pass http://fdfs;proxy_cache cache_proxy;proxy_cache_valid 200 24h; #200狀態(tài)緩存24小時(shí)proxy_cache_valid 302 10m; #302狀態(tài)緩存10分鐘proxy_set_header Host $host;expires -1;add_header X-Cache-Status $upstream_cache_status; #在http頭部增加一個(gè)字>段顯示是否命中緩存}#reload后,當(dāng)出現(xiàn)cache manager process進(jìn)程時(shí)表明緩存已經(jīng)建立成功

三、處理

1)針對(duì)本次場(chǎng)景,最簡(jiǎn)單就是遷移目錄到存儲(chǔ)空間更大的存儲(chǔ)上;

2)配置定期清理緩存,nginx緩存雖然可帶來吞吐量和性能的提升,但有時(shí)候緩存過期后并不會(huì)釋放,這時(shí)我們可借助nginx + ngx_cache_purge 模塊,手動(dòng)清理緩存;

wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gztar -zxvf ngx_cache_purge-2.3.tar.gzcp /sbin/nginx /sbin/nginx.backnginx -V./configure --prefix=/etc/nginx (略) --add-module=/root/app/ngx_cache_purge-2.3 make -j2 #是 make 編譯, 不是 make install ,make install 會(huì)覆蓋原來已經(jīng)安裝好的內(nèi)容。編譯必須沒有錯(cuò)誤objs/nginx -V  //驗(yàn)證編譯完成后,復(fù)制到sbin目錄下/sbin/nginx -s reload#清理緩存配置location ~ /clear_cache(.*) {     #proxy_cache_purge imooc_cache $host$1$is_args$args;     #刪除指定緩存區(qū)域cache_one的特定緩存文件$1$is_args$args     proxy_cache_purge cache_one $1$is_args$args;     #運(yùn)行本機(jī)和10.0.16.0/24;網(wǎng)段的機(jī)器訪問,拒絕其它所有     allow   127.0.0.1;     allow   10.0.16.0/24;     deny  all;}#這樣清理某個(gè)緩存文件的時(shí)候地址前面加上 /clear_cache 即可,比如瀏覽器訪問:http://10.0.16.12:5500/clear_cache//api/index.php

沒有緩存返回結(jié)果如下:

#示例2:控制滿足條件不緩存server{    ……    location /api/ {       set $a 0; #設(shè)置初始值       if ( $request_uri ~ /api/noapi/(.*) ){   set $a 1; #如果滿足不緩存 設(shè)置為1       }       proxy_no_cache $a;     ……    }    location ~ /clear_cache(.*) { allow   all; proxy_cache_purge imooc_cache $host$1$is_args$args;    }}#示例3:add_header      Nginx-Cache     "$upstream_cache_status";proxy_ignore_headers Expires;proxy_ignore_headers Cache-Control;set $nocache 0;# 以 aaa,bbb,ccc 開頭的不緩存if ($request_uri ~ ^/(aaa|bbb|ccc)) {    set $nocache 1;}proxy_cache_bypass $nocache;# cookie 里面設(shè)置了nocache,或者 參數(shù)傳值里有aaa,bbb 的不緩存,滿足一個(gè)即可proxy_no_cache $cookie_nocache $arg_aaa $arg_bbb;#client_body模塊配置, nginx對(duì)客戶端請(qǐng)求緩沖區(qū)大小有個(gè)默認(rèn)限制,如果超過了該值(比如在上傳大文件時(shí)),會(huì)報(bào)500錯(cuò)誤。client_body_buffer_size SIZE // 指定客戶端請(qǐng)求體緩沖區(qū)大小,如果請(qǐng)求大于該值,會(huì)報(bào)“500 Internal Server Error”錯(cuò)誤。client_body_temp_path	 /var/tmp/nginx DIR  [l1][lve2][lve3] //指定請(qǐng)求體臨時(shí)文件的存放目錄,可有多級(jí)。client_max_body_size  SIZE //允許客戶端請(qǐng)求的最大單文件字節(jié)數(shù),如果請(qǐng)求體大于該值,會(huì)報(bào)“413 Request Entity Too Large”錯(cuò)誤。

3)也可以借助 tmpwatch命令加入定時(shí)任務(wù)來清理,其實(shí),系統(tǒng)/tmp目錄,默認(rèn)情況下每日會(huì)處理一次,原理就是使用了tmpwatch。該命令會(huì)在/etc/cron.daily/目錄下生成一個(gè)tmpwatch文件

yum  install -y tmpwatchcat /etc/cron.daily/tmpwatch#! /bin/shflags=-umc/usr/sbin/tmpwatch "$flags" -x /tmp/.X11-unix -x /tmp/.XIM-unix \	-x /tmp/.font-unix -x /tmp/.ICE-unix -x /tmp/.Test-unix \	-X "/tmp/hsperfdata_*" 10d /tmp   #tmp目錄會(huì)刪除240小時(shí)未訪問過的文件,它可從指定的目錄中遞歸地搜索并刪除指定的目錄中一段時(shí)間未訪問的文件。/usr/sbin/tmpwatch "$flags" 30d /var/tmp  #刪除30天前的文件for d in /var/{cache/man,catman}/{cat?,X11R6/cat?,local/cat?}; do    if [ -d "$d" ]; then	/usr/sbin/tmpwatch "$flags" -f 30d "$d"    fidone#/usr/sbin/tmpwatch -afv 3 /tmp //清除/tmp下三小時(shí)以內(nèi)沒有使用的文件,并將結(jié)果輸出。

四、附錄

參考1:https://cloud.tencent.com/developer/article/2048035

參考2:https://www.cnblogs.com/backups/p/nginx4.html

參考3:http://t.zoukankan.com/ecalf-p-4887382.html

總結(jié)

到此這篇關(guān)于一次nginx崩潰事件的文章就介紹到這了,更多相關(guān)nginx崩潰事件內(nèi)容請(qǐng)搜索以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持!

標(biāo)簽: Nginx
主站蜘蛛池模板: 欧美日韩视频一区二区在线观看 | 看一级毛片一区二区三区免费 | 美女视频大全视频a免费九 美女视频大全网站免费 | 黄色三级视频在线播放 | 黄色理论视频 | 日本加勒比在线播放 | 男人天堂网2022 | 国产精品黄在线观看免费软件 | 视频一区二区在线 | 亚洲欧美专区精品久久 | 精品国产夜色在线 | 黄色网址视频在线观看 | 欧美精品一二三区 | 日韩欧美中文字幕在线观看 | 免费永久国产在线视频 | 亚洲精品国产一区二区在线 | 亚洲精品乱无伦码 | 免费在线观看a级毛片 | 久草热视频在线观看 | heyzo北条麻妃久久 | 欧美一级毛片激情 | 嫩草一区二区三区四区乱码 | α片毛片 | 黄色上床网站 | 亚洲 欧美 都市 自拍 在线 | 国产成人在线视频播放 | 成人在线高清 | 久久精品亚洲综合一品 | 中文字幕亚洲天堂 | 欧日韩视频777888 | 男女午夜爱爱久久无遮挡 | 爽爽在线 | 狠狠色丁香九九婷婷综合五月 | 99视频精品全国免费 | 成人在线精品视频 | 亚洲自拍高清 | 久久国产精品久久久久久久久久 | 91精品全国免费观看 | 午夜日韩| 国产一级在线现免费观看 | 亚洲午夜综合网 |