摘要:每個進程打開文件描述符最大數目配置要和系統的單進程打開文件數一致內核下開啟文件打開數為,就相應應該填寫調度時分配請求到進程并不是那么的均衡,假如超過會返回錯誤。
user www www; # ginx要開啟的進程數 一般等于cpu的總核數,沒必要開那么多,1個nginx內存消耗10兆左右 worker_processes 4; # 為每個進程分配cpu,上例中將4 個進程分配到4個cpu,當然可以寫多個,或者將一 個進程分配到多個cpu。 worker_cpu_affinity 00000001 00000010 00000100 00001000; # 每個nginx進程打開文件描述符最大數目 配置要和系統的單進程打開文件數一 # 致,linux 2.6內核下開啟文件打開數為65535,worker_rlimit_nofile就相應,應該填寫65535 # nginx調度時分配請求到進程并不是那么的均衡,假如超過會返回502錯誤。我這里寫的大一點 worker_rlimit_nofile 100000; # 開啟nginx錯誤日志 error_log logs/error.log; # 告訴nginx只能記錄嚴重的錯誤 #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { # 每個工作進程允許最大的同時連接數(Maxclient = work_processes * worker_connections) # 默認1024 worker_connections 65535; # 告訴nginx收到一個新連接通知后接受盡可能多的連接。 multi_accept on; # 設置用于復用客戶端線程的輪詢方法。如果你使用Linux 2.6+,你應該使用epoll。 # 如果你使用*BSD,你應該使用kqueue。 # 值得注意的是如果你不知道Nginx該使用哪種輪詢方法的話,它會選擇一個最適合你操作系統的 use epoll; } http { include mime.types; default_type application/octet-stream; log_format main "$remote_addr - $remote_user [$time_local] "$request" " "$status $body_bytes_sent "$http_referer" " ""$http_user_agent" "$http_x_forwarded_for""; limit_req_zone $binary_remote_addr zone=allips:10m rate=20r/s; # #access_log logs/access.log main; # 這個將為打開文件指定緩存,默認是沒有啟用的,max 指定緩存數量,建議和打開文件數一致, # inactive 是指經過多長時間文件沒被請求后刪除緩存 open_file_cache max=204800 inactive=20s; # open_file_cache 指令中的inactive 參數時間內文件的最少使用次數, # 如果超過這個數字,文件描述符一直是在緩存中打開的, # 如上例,如果有一個文件在inactive 時間內一次沒被使用,它將被移除 open_file_cache_min_uses 1; # 這個是指多長時間檢查一次緩存的有效信息 open_file_cache_valid 30s; # 并不會讓nginx執行的速度更快,但它可以關閉在錯誤頁面中的nginx版本數字,這樣對于安全性是有好處的 server_tokens off; # 磁盤和TCP socket之間互相拷貝數據(或任意兩個文件描述符)。 # Pre-sendfile是傳送數據之前在用戶空間申請數據緩沖區 sendfile on; # 告訴nginx在一個數據包里發送所有頭文件,而不一個接一個的發送 #tcp_nopush on; # 告訴nginx不要緩存數據,而是一段一段的發送, # 當需要及時發送數據時,就應該給應用設置這個屬性,這樣發送一小塊數據信息時就不能立即得到返回值。 #tcp_nodelay on; upstream phpServer{ server 172.20.17.210:9000 weight=1 max_fails=2 fail_timeout=3; server 172.20.17.211:9000 weight=1 max_fails=2 fail_timeout=3; } # keepalive超時時間 keepalive_timeout 65; client_max_body_size 2m; # 不準許IP直接訪問, 直接訪問報500錯誤 server { listen 80 default_server; server_name _; return 500; } # 配置虛擬主機,過個server就復制多個 server { listen 80; # 開啟gzip壓縮 gzip on; gzip_min_length 1k; gzip_buffers 4 16k; #gzip_http_version 1.0; gzip_comp_level 2; gzip_types text/plain application/x-javascript text/css application/xml text/javascript application/x-httpd-php; gzip_vary off; gzip_disable "MSIE [1-6]."; # 配置域名 server_name www.xxxxx.com xxxxx.com; # 配置網站目錄 root /usr/local/nginx/html/xxxxx.com; # 只允許我們的域名的訪問 if ($host !~ ^(xxxxx.com|www.xxxxx.com|images.xxxxx.com)$ ) { return 444; } # 配置域名重定向 #if ($host != "www.xxxxx.com" ) { # rewrite ^/(.*)$ http://www.xxxxx.com/$1 permanent; #} # 限制可用的請求方法 if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 444; } # 如何拒絕一些User-Agents if ($http_user_agent ~* LWP::Simple|BBBike|wget) { return 403; } # 如何防止圖片盜鏈 location /images/ { valid_referers none blocked www.xxxxx.com xxxxx.com; if ($invalid_referer) { return 403; } } location / { # 配置rewrite if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } # include /usr/local/nginx/html/yphp/.htaccess; # rewrite ^/(.+)/(.+)[/]?$ /index.php?m=$1&a=$2 last; # 配置默認訪問文件 index index.php index.html index.htm; } # 包含虛擬主機公用配置文件 include server.conf; } }php-fpm.conf 文件配置優化
[global] pid = run/php-fpm.pid process_control_timeout=5 [www] listen.allowed_clients = 127.0.0.1 user=www group=www pm=dynamic # 增加 PHP-FPM 打開文件描述符的限制 rlimit_files = 51200 # 這個配置決定了php-fpm的總進程數,內存小的少設點 pm.max_children=20 # 并發數越大,此請求數應越大 pm.max_requests=10000 # 初始php-fpm進程數 pm.start_servers =10 # 動態方式下的起始php-fpm進程數量(設置太大可能會報錯,根據服務器配置設置) pm.min_spare_servers = 5 # 動態方式下服務器空閑時最小php-fpm進程數量 pm.max_spare_servers = 10 # 表示在emergency_restart_interval所設值內出現SIGSEGV或者SIGBUS錯誤的php-cgi # 進程數如果超過 emergency_restart_threshold個,php-fpm就會優雅重啟。這兩個選項一般保持默認值。 emergency_restart_threshold = 60 emergency_restart_interval = 60siptables 防火墻限制用戶訪問平率
# 下面的例子會阻止來自一個IP的60秒鐘內超過15個連接端口80的連接數 /sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –set /sbin/iptables -A INPUT -p tcp –dport 80 -i eth0 -m state –state NEW -m recent –update –seconds 60 –hitcount 15 -j DROP service iptables save
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/39282.html
摘要:注意本篇文章為負載均衡的理論篇后續找個機會推出實戰篇。理論篇主要講述如何配置負載均衡配置負載均衡不難。常用的狀態有,表示當前的暫時不參與負載均衡。注,當負載調度算法為時,后端服務器在負載均衡調度中的狀態不能是和。 注意,本篇文章為負載均衡的理論篇,后續找個機會推出實戰篇。理論篇主要講述如何配置負載均衡,配置負載均衡不難。但實戰中要要注意幾個點,比如如何做到多服務器之間的數據共享(ses...
摘要:現有的服務器和應用程序服務器相結合并在一個冒泡中運行,無法直接接觸網絡流量,由反向代理服務器提出填鴨式請求。賦予高可用性讓你的反向代理服務器鏡像到在線備份,同時擁有備用的應用程序服務器,讓你的站點高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過 Nginx 優化 Python 應用性能。本文系國內 ITOM 管理平臺 OneAPM 編譯呈現。 本文上一篇系: 利用...
摘要:現有的服務器和應用程序服務器相結合并在一個冒泡中運行,無法直接接觸網絡流量,由反向代理服務器提出填鴨式請求。賦予高可用性讓你的反向代理服務器鏡像到在線備份,同時擁有備用的應用程序服務器,讓你的站點高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過 Nginx 優化 Python 應用性能。本文系國內 ITOM 管理平臺 OneAPM 編譯呈現。 本文上一篇系: 利用...
摘要:負載均衡是通過后端引入一個負載均衡器和至少一個額外的服務器來緩解這類問題增加的服務器和原本的服務器提供相同的內容。負載均衡不需要前端進行配置,主要是服務端進行配置,前端稍作了解即可。 Nginx主要功能 負載均衡 反向代理 動靜分離 配置https 負載均衡 負載均衡是一門計算機網絡技術,主要用來優化資源使用、最大化吞吐率、最小化響應時間、同時避免過載的目的。如果一個網站只有一臺服...
摘要:安裝后已經完成了安裝,并且等待其他的線程被關閉。激活后在這個狀態會處理事件回調提供了更新緩存策略的機會。并可以處理功能性的事件請求后臺同步推送。廢棄狀態這個狀態表示一個的生命周期結束。 showImg(https://segmentfault.com/img/bVbwWJu?w=2056&h=1536); 不知不覺,已經來到了最后的下篇 其實我寫的東西你如果認真去看,跟著去寫,應該能有...
閱讀 2815·2021-10-13 09:48
閱讀 3776·2021-10-13 09:39
閱讀 3586·2021-09-22 16:04
閱讀 1816·2021-09-03 10:48
閱讀 837·2021-08-03 14:04
閱讀 2358·2019-08-29 15:18
閱讀 3400·2019-08-26 12:19
閱讀 2869·2019-08-26 12:08