Nginx配置高並發性
1.壹般來說,以下項目對於nginx配置文件中的優化比較很有用:
1.工作者_進程8;
nginx程序的數量建議按照CPU的數量來指定,壹般是它的倍數(比如兩個四核CPU算8個)。
2.worker _ CPU _ affinity 00000001 0000000100 00001000 00010000 00100000000 0100000000 010000000000 10000000000000;
給每個程序分配cpu。在上面的例子中,8個程序被分配給8個CPU。當然,妳可以寫多個程序,也可以把壹個程序分配給壹個程序。
程序被分配給多個CPU。
3.worker _ rlimit _ nofile 65535
這個命令指的是nginx程序打開時文件描述符的最大數量。理論值應該是打開文件的最大數量。
片數(ulimit -n)除以nginx程序數,但nginx分配請求沒有那麽統壹,所以最好和ulimit-n的值保持壹致。
現在linux 2.6內核下打開的文件數是65535,worker_rlimit_nofile也要相應的填入65535。
這是因為nginx調度時對程序的請求分布不是那麽均衡,所以如果填寫10240,當總並發達到30000-40000時,部分程序可能會超過10240,然後返回錯誤502。
如何查看linux系統的文件描述符:
[root @ web 001 ~]# sysctl-a | grep fs . file
fs.file-max = 789972
fs.file-nr = 510 0 789972
4.使用epoll
使用epoll的I/O模型
(
補充說明:
與apache類似,nginx對於不同的操作系統有不同的事件模型。
a)標準事件模型
選擇和輪詢屬於標準事件模型。如果當前系統沒有更有效的方法,nginx會選擇Select或poll。
b)有效的事件模型
Kqueue:在FreeBSD 4.1+,OpenBSD 2.9+,NetBSD 2.0,MacOS X中使用,在雙處理器的Mac OS X系統中使用Kqueue可能會導致內核崩潰。
Epoll:用於Linux內核2.6版及更高版本的系統。
/dev/poll:在Solaris 7 11/99+、惠普/UX 11.22+(事件端口)、IRIX 6 . 5 . 15+和True64 UNIX 5.1A+中使用。
Eventport:在Solaris 10中使用。為了防止內核崩潰,有必要安裝安全補丁。
)
5.工人_連接65535;
每個程序允許的最大連接數。理論上,每個nginx服務器的最大連接數是worker _ processes * worker _ connections。
6.keepalive _ timeout 60
保持活動超時。
7.client _ header _ buffer _ size 4k
客戶端請求頭的緩沖區大小可以根據系統分頁大小來設置。壹般壹個請求頭的大小不會超過1k,但是由於壹般系統分頁都大於1k,所以這裏設置為分頁大小。
頁面大小可以通過命令getconf PAGESIZE獲得。
[root @ web 001 ~]# getconf PAGESIZE
4096
但也有client_header_buffer_size超過4k的情況,但client_header_buffer_size的值必須設置為“系統分頁大小”的整數倍。
8.open _ file _ cache max = 65535 inactive = 60s;
這將指定打開文件的緩存,默認情況下不啟用。max指定緩存的數量,建議與打開文件的數量壹致。非活動是指文件未被請求後刪除緩存所需的時間。
9.open _ file _ cache _ valid 80s
這是指檢查緩存中有效信息的頻率。
10.open _ file _ cache _ min _ uses 1;
在open_file_cache命令的非活動參數時間內,文件被使用的最小次數。如果超過這個數字,文件描述符總是在緩存中打開。例如,如果壹個文件在非活動期間壹次都沒有使用,它將被刪除。
二、關於核心論點的優化:
. ipv4.tcp_max__buckets = 6000
默認情況下,timewait的數量為180000。
. IP v4 . IP _本地_端口_範圍= 1024 65000
允許系統打開的端口範圍。
. ipv4.tcp__recycle = 1
啟用時間等待快速回收。
. ipv4.tcp__reuse = 1
打開重用。允許等待時間套接字重新用於新的TCP連接。
. ipv4.tcp_syncookies = 1
打開SYN Cookies,並在SYN等待隊列溢出時啟用cookie進行處理。
. core.somaxconn = 262144
在web應用中,listen函數的backlog的缺省值對於核心參數限制為128,而nginx定義的NGX_LISTEN_BACKLOG的缺省值是511,所以需要調整這個值。
. core . dev _ max _ backlog = 262144
當每個網絡接口接收數據包的速度快於核心處理數據包的速度時,允許發送到隊列的最大數據包數量。
. IP v4 . TCP _ max _ orbonds = 262144
系統中TCP套接字的最大數量與任何用戶文件控制代碼無關。如果超過此數量,孤立連接將立即重置,並打印壹條警告消息。這個限制只是為了防止簡單的DoS攻擊。我們不應該過分依賴它或者人為降低這個值,而應該增加這個值(如果加上內存的話)。
. IP v4 . TCP _ max _ syn _ backlog = 262144
尚未收到客戶端確認信息的已記錄連接請求的最大數量。對於128M內存的系統,默認值為1024,對於小內存的系統,默認值為128。
. ipv4.tcp_timestamps = 0
時間戳可以避免序列號的纏繞。1Gbps鏈路肯定會遇到以前用過的序列號。時間戳允許內核接受這樣的“異常”數據包。我們需要在這裏關掉它。
. IP v4 . TCP _ synack _ retries = 1
為了打開對等連接,核心需要發送壹個帶有ACK的SYN來響應前面的SYN。三次握手中所謂的第二次握手。該設置決定了核心放棄連接之前發送的SYN+ACK數據包的數量。
. ipv4.tcp_syn_retries = 1
核心放棄建立連接之前發送的SYN數據包的數量。
. ipv4.tcp_fin_timeout = 1
如果套接字需要在本地關閉,該參數決定了它將保持FIN-WAIT-2狀態多長時間。對等體可能會出錯,並且永遠不會關閉連接,甚至會意外崩潰。默認值為60秒。2.2內核的正常值是180秒。3.妳可以按這個設置,但是要記住,即使機器是壹個輕負載的WEB服務器,也會因為大量的死套接字而存在內存溢出的風險。FIN- WAIT-2的風險小於FIN-WAIT-1,因為它最多只能吃掉1.5K內存。
. ipv4.tcp_keepalive_time = 30
啟用keepalive時,TCP發送keepalive消息的頻率。默認值為2小時。
第三,在下面貼壹個完整的核心優化設置:
在vi /etc/sysctl.conf CentOS5.5中,所有內容都可以被清空並直接替換為以下內容:
. ipv4.ip_forward = 0
. IP v4 . conf . default . RP _ filter = 1
. IP v4 . conf . default . aept _ source _ route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
. ipv4.tcp_syncookies = 1
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel . shmmax = 68719476736
kernel.shmall = 4294967296
. ipv4.tcp_max__buckets = 6000
. ipv4.tcp_sack = 1
. IP v4 . TCP _ window _ scaling = 1
. IP v4 . TCP _ rmem = 4096 87380 4194304
. IP v4 . TCP _ wmem = 4096 16384 4194304
. core.wmem_default = 8388608
. core.rmem_default = 8388608
. core . rmem _ max = 16777216
. core . wmem _ max = 16777216
. core . dev _ max _ backlog = 262144
. core.somaxconn = 262144
. IP v4 . TCP _ max _ orbonds = 3276800
. IP v4 . TCP _ max _ syn _ backlog = 262144
. ipv4.tcp_timestamps = 0
. IP v4 . TCP _ synack _ retries = 1
. ipv4.tcp_syn_retries = 1
. ipv4.tcp__recycle = 1
. ipv4.tcp__reuse = 1
. IP v4 . TCP _ mem = 94500000 915000000 927000000
. ipv4.tcp_fin_timeout = 1
. ipv4.tcp_keepalive_time = 30
. IP v4 . IP _本地_端口_範圍= 1024 65000
使用以下命令使配置立即生效:
/ *** in/sysctl -p
四、以下是關於系統連接數的優化。
Linux默認打開文件和最大用戶進程數是1024。
#ulimit -n
1024
# ulimit–u
1024
問題描述:表示服務器只能同時打開1024個文件,處理1024個用戶程序。
使用ulimit -a查看當前系統的所有限制值,使用ulimit -n查看當前打開文件的最大數量。
新安裝的linux默認只有1024。當它作為壹個負載很重的服務器使用時,很容易遇到錯誤:打開的文件太多。所以需要放大。
解決方案:
ulimit–n 65535可以立即修改,但重啟後無效。(註意ulimit -SHn 65535相當於ulimit -n 65535,-S指軟,-H指硬)。
有三種方法可以修改它:
1.在/etc/rc.local中添加壹行ulimit -SHn 65535。
2.在/etc/profile中添加壹行ulimit -SHn 65535。
3.在/etc/security/limits.conf的末尾添加以下內容:
*軟nofile 65535
*硬文件65535
*軟nproc 65535
*硬nproc 65535
具體來說,1方法在CentOS中沒有效果,第三種方法有效果,第二種方法在Debian中有效果。
# ulimit -n
65535
# ulimit -u
65535
註意:ulimit命令有自己的軟設置和硬設置。加-H表示硬,加-S表示軟。默認顯示為軟限制。
軟限制是指當前系統生效的設定值。普通用戶可以降低硬限制。但不能增加。軟限制不能設置得高於硬限制。只有root用戶可以增加硬限制。
5.下面是壹個簡單的nginx配置文件:
用戶;
工作者_進程8;
worker _ CPU _ affinity 00000001 0000000100 00001000 0001000 00010000 0010000
01000000;
error _ log log/nginx _ error . log crit;
PID/usr/local/nginx/nginx . PID;
worker _ rlimit _ nofile 204800
事件
{
使用epoll
工人_連接204800;
}
{
包括mime.types
default_type應用程序/八位字節流;
字符集utf-8;
服務器名稱哈希桶大小128;
客戶端_標頭_緩沖區_大小2k;
large _ client _ header _ buffers 4 4k;
client _ max _ body _ size 8m
在上發送文件;
tcp _ nopush on
keepalive _ timeout 60
fastcgi _ cache _ path/usr/local/nginx/fastcgi _ cache levels = 1:2
keys_zone=TEST:10m
不活躍= 5m
fastcgi _ connect _ timeout 300
fastcgi _ send _ timeout 300
fastcgi _ read _ timeout 300
fastcgi _ buffer _ size 4k
fastcgi _ buffers 8 4k
fastcgi _ busy _ buffers _ size 8k
fastcgi _ temp _ file _ write _ size 8k;
fastcgi_cache測試;
fastcgi _ cache _ valid 200 302 1h;
fastcgi _ cache _ valid 301 1d;
fastcgi _ cache _ valid any 1m;
fastcgi _ cache _ min _ uses 1;
fastcgi_cache_use_stale錯誤超時invalid _ header _ 500
open _ file _ cache max = 204800 inactive = 20s;
open _ file _ cache _ min _ uses 1;
open _ file _ cache _ valid 30s
tcp_nodelay打開;
gzip打開;
gzip _ min _ length 1k;
gzip _ buffers 4 16k;
gzip _ _版本1.0;
gzip _ p _ level 2;
gzip_types文本/普通應用程序/x-javascript文本/css應用程序/XML;
gzip _ vary on
計算機網絡服務器
{
聽8080;
server _ name backup.aiju
索引index.php index.htm;
root/;
位置/狀態
{
stub _ status on
}
位置~。*\.(php|php5)?$
{
fastcgi _ pass 127 . 0 . 0 . 1:9000;
fastcgi _ index index.php;
包含fcgi.conf
}
位置~。*\.(gif | jpg | JPEG | png | BMP | swf | js | CSS)$
{
過期30d
}
log _ format AES ' $ remote _ addr-$ remote _ user[$ time _ local]" $ request " '
$ status $ body _ bytes _ sent " $ _ referer " '
" $ _ user _ agent " $ _ x _ forwarded _ for ";
aess _ log log/aess . log aess;
}
}
Python修改了ss配置,但是我還是上不了1安裝python。
註意添加環境變量。
2.安裝ss,
默認情況下,Pip已經安裝在python中,因此您可以直接在python中使用安裝命令:
Pip安裝simplejson(這不是必需的)
安裝shadowsocks
3.查看和配置ss
Pip凍結是壹個視圖命令。
配置目錄是:
python _ path/lib/site-packages/shadow socks/config . JSON
內容如下:
{
"服務器":" 0.0.0.0 ",
【服務器端口】:8388,
【本地_端口】:1080,
“密碼”:“xoxxoo”,
【超時】:600,
“方法”:“aes-256-cfb”
}
4.從cmd命令行界面中的以下命令開始。
ss server-c python _ path \ Lib \ site-packages \ shadow socks \ config . JSON
因為上面配置了服務器的8388端口,所以我們可以使用stat命令來檢測8388端口是否打開。
stat -ano|findstr "8388 "
Python安裝SS服務器端配置。服務器端配置完成。
linux下的tongweb5.0如何配置並發項目數?什麽是tomcat 5.0?
套餐或手機卡無法上網的原因可能有以下幾種:
1.在該位置找不到網絡信號;
2.手機卡不具備上網功能;
3.移動終端不支持所使用的運營商網絡。
妳可以嘗試用以下方法解決:
1.重啟手機測試壹下;
2.您可以在其他位置再次搜索網絡信號;
3.如果手機卡上沒有開啟上網功能,需要開啟上網功能,打開手機上的數據開關;
4.如果手機終端不支持使用的運營商網絡,建議換卡進行手機測試。
如果以上方法還是解決不了這個問題,建議聯系當地運營商客服或者咨詢手機官方客服。
MMM現在去不了系統維護很正常。妳害怕什麽?平臺實施四年後,停止維護,升級系統。別擔心。敢吃敢玩。壹眨眼壹切都正常了。
微信換了手機號。原來的號就是上不去。修改個人賬戶,多次還是上不了驗證碼怎麽辦?
為什麽我設置了XX之後就上不了Google了?我不用vpn或者在國外用不了。
受中國限制,
就算幫妳申請,最近或者平時也經常用不上。
而且幫妳註冊的人可以隨時更改妳的密碼,不安全不放心。
如果真的要用,方法和步驟:
1和51vpn可以支持國外。
2.vpn連接後,就可以啟動Google並註冊使用了。
樓主需要軟件連接國外代理服務器幫助登錄網站。樓主的XX-成功連接代理服務器了嗎?
最近在網上看到壹篇文章,現轉貼其余。這是壹篇2002年的文章,那是搜索引擎行業重要的壹年,因為從那壹年開始,Google就再也沒有“好用”過,搜索時經常出現“此頁面無法訪問”,然後Google就會暫時無法連接,Google的網頁快照功能就會被屏蔽到。...