一、防刷/限流:nginx + lua 用於對於撞庫、刷單進行IP的攔截,定義頻次,白名單nginx
二、配置優化緩存
worker process:不能超過CPU的核數,通常2-4個,默認爲4,過多會致使CPU使用太高。若是有阻塞的IO,能夠適當增長數量,提升處理效率。服務器
worker connections:每一個worker維護的鏈接數,當你使用的端口即將耗盡,能夠適當增長鏈接數,默認1024,通常狀況下打開2個鏈接獲取網站資源,也就最多處理512個用戶併發。 默認的keepalive-timeout是65 。網絡
CPU優先級: 操做系統的 CPU 調度器處理負載均衡的能力要遠遠超過 ,若是負載均衡有問題,可使用調度器工具。併發
Keep alive: 容許客戶端維護與服務器已經建立的鏈接進行一批請求的處理直到指定的超時時間到達 。 Nginx可以很好的處理空閒的鏈接 , Nginx的做者聲稱10,000個空閒的鏈接智慧使用2.5兆內存(unbelievable), 爲何keep alive有着如此巨大的影響, 應該是顯而易見的, 那就是你避免爲全部的HTTP請求建立各自的鏈接, 這是很是低效的. 也許你不須要把keepalive-timeout設置爲65, 可是10-20應該是比較通用的選擇,正如上面一段所說, Nginx會很好的處理這方面。負載均衡
硬件限制: 服務器主要還有3個方面的瓶頸. CPU,內存和IO ,CPU,內存很是高,IO是弊端。 爲了不IO瓶頸, 咱們須要大量的減小nginx對硬盤驅動器的讀寫, 經過修改Nginx的行爲,以減小磁盤寫操做,以及確保對nginx的內存限制,容許它避免磁盤訪問 。工具
Access Log:若是不對這些日誌進行統計,能夠關閉,避免對磁盤進行操做,若是要訪問,能夠考慮存在內存,減小IO操做。性能
Error Log:對問題的定位,須要保持一致打開。優化
Buffers:設置緩存大小, 若是緩存大小設置的過小, Nginx將不得不把上游(用英文upsteams會更好)的相應結果存放到臨時的緩存文件裏面,這將會同時增長IO的讀寫操做, 並且流量越大問題越多。client_body_buffer_size指令用來指定處理客戶端請求的緩衝區大小,?這個表明了訪問請求的body. 這是用來處理POST的數據,也就是經過提交表單,文件上傳等請求的數據. 若是你須要處理不少大的POST請求的,你必須確保緩存區要設置的足夠大.網站
完全移除磁盤IO:減小磁盤IO無心是不適用磁盤。若是數據量少,能夠徹底放在內存,避免由於IO差生阻塞。對於數據量大的,會緩存頻繁訪問的磁盤扇區,更大的內存能夠下降IO的使用,意味着能夠經過增大內存解決IO的問題。
網絡IO:
假設你有了足夠大的內存來緩存你的全部數據. 這意味着理論上你的IO讀速度達到了3-6gbps. 可是你沒有那麼快的網絡通道. 不幸的是,咱們能夠優化的網絡IO是有限的,咱們要經過網絡傳輸數據,因此還將受制於網絡IO. 惟一真正有效的方法是儘可能減小數據量或壓縮。
幸運的是Nginx提供了gzip模塊, 它可使咱們在將數據傳輸給客戶端以前壓縮它, 這將大大減小數據的大小. 通常來講 gzip_comp_level的值不會在性能方面有多大的差異,設爲爲4-5便可. 一味的增長它是沒有意義的只是浪費的CPU的週期.