Nginx配置及linux系統記憶體高併發多方面優化
基於網上的技術文章思路,自己加以整理,有常用的和不常用的策略,供參考。
nginx的優化
1. gzip壓縮優化 2. expires快取有還 3. 網路IO事件模型優化 4. 隱藏軟體名稱和版本號 5. 防盜鏈優化 6. 禁止惡意域名解析 7. 禁止通過IP地址訪問網站 8. HTTP請求方法優化 9. 防DOS攻擊單IP併發連線的控制,與連線速率控制 10. 嚴格設定web站點目錄的許可權 11. 將nginx程序以及站點運行於監牢模式 12. 通過robot協議以及HTTP_USER_AGENT防爬蟲優化13. 配置錯誤頁面根據錯誤碼指定網頁反饋給使用者 14. nginx日誌相關優化訪問日誌切割輪詢,不記錄指定元素日誌、最小化日誌目錄許可權 15. 限制上傳到資源目錄的程式被訪問,防止木馬入侵系統破壞檔案 16. FastCGI引數buffer和cache配置檔案的優化 17. php.ini和php-fpm.conf配置檔案的優化 18. 有關web服務的Linux核心方面深度優化(網路連線、IO、記憶體等) 19. nginx加密傳輸優化(SSL) 20. web伺服器磁碟掛載及網路檔案系統的優化 21. 使用nginx cache
1、基本安全優化
1.1 隱藏版本資訊
一般來說,軟體的漏洞都和版本相關,所以我們要隱藏或消除web服務對訪問使用者顯示的各種敏感資訊。
1 [[email protected] rpm]# curl -I 10.0.0.8 2 HTTP/1.1 401 Unauthorized 3 Server: nginx #隱藏版本號 4 Date: Thu, 21 Jul 2016 03:23:38 GMT 5 Content-Type: text/html6 Content-Length: 188 7 Connection: keep-alive 8 WWW-Authenticate: Basic realm="oldboy training" 9 過程: 10 vim /application/nginx/conf/nginx.conf 11 在http模組下加入: 12 server_tokens off; 13 /application/nginx/sbin/nginx -t 14 /application/nginx/sbin/nginx -s reload
1.2 隱藏nginx要修改原始碼
要修改內容的路徑:
第一路徑:
1 /home/oldboy/tools/nginx-1.6.3/src/core/nginx.h 第14,16行 2 #define NGINX_VERSION "1.6.2" 修改為想要的版本號如2.4.3 3 #define NGINX_VER "nginx/" NGINX_VERSION 將nginx修改為想要修改的軟體名稱,如Apache。
第二路徑
1 /home/oldboy/tools/nginx-1.6.3/src/http/ngx_http_header_filter_module.c第49行 2 grep 'Server:nginx' ngx_http_header_filter_module.cstatic 3 sed -i 's#Server:nginx#Server:Apache#g' ngx_http_header_filter_module.c
第三路徑
/home/oldboy/tools/nginx-1.6.3/src/http/ngx_http_special_response.c第21,30行 "<hr><center>"NGINX_VER "(http://oldboy.blog.51cto.com)</center>" CRLF "<hr><center>OWS</center>" CRLF
然後重新編譯
1.3 更改nginx服務的預設使用者
第一種方法:
直接更改配置檔案nginx.conf.default引數,將預設的#user nobody;改為user nginx.nginx;
第二種方法:
直接在編譯nginx的時候指定使用者和使用者組命令如下:
./configure --prefix=/application/nginx-1.6.3 --user=nginx --group=nginx --with-http_ssl_module --with-http_stub_status_module
1.4 降權啟動nginx
1 useradd inca 2 cd /home/inca/ 3 mkdir conf logs www 4 echo inca >www/index.html 5 chown -R inca.inca * 6 ln -s /application/nginx/conf/mime.types conf/mime.types #mime.types媒體型別檔案
egrep -v "#|^$" /application/nginx/conf/nginx.conf.default >conf/nginx.conf
nginx.conf配置檔案
worker_processes 1; error_log /home/inca/logs/error.log; pid /home/inca/logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; default_type application/octet-stream; sendfile on; keepalive_timeout 65; server { listen 8080; server_name localhost; location / { root /home/inca/www; index index.html index.htm; } access_log /home/inca/logs/access.log main; } }
su - inca -c "/application/nginx/sbin/nginx -c /home/inca/conf/nginx.conf" #啟動nginx服務
重點強調:
1.nginx.conf裡面的相關路徑都要更改
2.普通使用者的埠問題
2、 根據引數優化nginx服務效能
2.1 優化nginx程序個數的策略
在高併發、高訪問量的web服務場景,需要事先啟動好更多的nginx程序,以保證快速響應並處理大量併發使用者的請求。
worker_processes 1;一般調整到與CPU的核數相同(如,2個四核的cpu計為8)
(1)檢視LInux可檢視CPU個數及總核數
grep processor /proc/cpuinfo|wc -l
(2)檢視CPU總顆數
grep 'physical id' /proc/cpuinfo|sort|uniq|wc -l
(3)通過執行top命令,然後按數字1,即可顯示所有的CPU核數
top 按1鍵就會顯示第一個的資訊 Cpu0 : 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0
2.2 優化繫結不同的nginx程序到不同的CPU上
預設情況下,nginx的程序跑在某一個CPU或CPU的某一個核上,導致nginx程序使用硬體的資源不均,本節的優化是不同的nginx程序給不同的CPU處理,充分有效的利用有效的硬體資源
四核cpu配置
worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000;
雙核配置
worker_processes 2; worker_cpu_affinity 0101 1010;
還有一個命令taskset -c用來分配服務給CPU
2.3 nginx事件處理模型優化
nginx的連線處理機制在於不同的作業系統會採用不同的I/O模型,Linux下,nginx使用epoll的I/O多路複用模型,在freebsd使用kqueue的IO多路複用模型,在solaris使用/dev/pool方式的IO多路複用模型,在windows使用的icop等等。
要根據系統型別不同選擇不同的事務處理模型,選擇有“use [ kqueue | rtsig |epool |dev/pool |select |pllo ];”我們使用的是Centos6.5的linux,因此將nginx的事件處理模型調整為epool模型。
events { worker_connections 1024; use epoll; }
官方說明:在不指定事件處理模型時,nginx預設會自動的選擇最佳的事件處理模型服務
2.4 調整nginx單個程序允許的客戶端最大連線數
引數語法:worker_connections number
預設配置:worker_connections 512
放置位置:events 標籤
events { worker_connections 1024; #一個worker程序的併發 }
總併發= worker_processes* worker_connections
2.5 配置nginx worker程序最大開啟檔案數
引數語法:worker_rlimit_nofile number
放置位置:主標籤段
說明:作用是改變worker processes能開啟的最大檔案數
worker_rlimit_nofile 65535;
這各引數受系統檔案的最大開啟數限制,解決方法:
[[email protected] nginx]# cat /proc/sys/fs/file-max 8192
檔案系統最大可開啟檔案數
[[email protected] nginx]# ulimit -n 1024
程式限制只能開啟1024個檔案
使用# ulimit -n 8192調整一下
或者永久調整開啟檔案數 可在啟動檔案/etc/rc.d/rc.local末尾新增(在/etc/sysctl.conf末尾新增fs.file-max=xxx無效)
2.6 開啟高效檔案傳輸模式
設定引數 sendfile on;
sendfile引數用於開啟檔案的高效傳輸模式。同時將tcp_nopush和tcp_nodelay兩個指令設定為on,可防止網路及磁碟i/o阻塞,提升nginx工作效率。
http {
sendfile on; #放在http,server,location都可以
}
設定引數tcp_nopush;
啟用tcp_nopush引數可以允許把httpresponse header和檔案的開始放在一個檔案裡釋出,積極的作用是減少網路報文段的數量(只有sendfile on開啟才生效)
例: sendfile on; tcp_nopush on; tcp_nodelay on; server_tokens off; server_names_hash_bucket_size 128; server_names_hash_max_size 512; keepalive_timeout 65; client_header_timeout 15s; client_body_timeout 15s; send_timeout 60s;
2.7 FastCGI相關引數調優
fastcgi引數是配合nginx向後請求PHP動態引擎服務的相關引數。
fastcgi_connect_timeout 240; fastcgi_send_timeout 240; fastcgi_read_timeout 240; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 128k; #fastcgi_temp_path /data/ngx_fcgi_tmp; fastcgi_cache_path /data/ngx_fcgi_cache levels=2:2 keys_zone=ngx_fcgi_cache:512m inactive=1d max_size=40g;
2.8 配置nginx gzip壓縮實現效能優化
nginx壓縮功能的介紹:
nginx gzip壓縮模組提供了壓縮檔案內容的功能,使用者請求的內容在傳送給客戶端之前,nginx伺服器會根據一些具體的策略實施壓縮,以節省網站出口頻寬,同時加快了資料傳輸效率,提升了使用者的訪問體驗。
2.8.1 壓縮的優點:
提升網站使用者體驗:由於發給使用者的內容小了,所以使用者訪問單位大小的頁面就快了,使用者體驗就提升了
節約網站頻寬成本:由於資料時壓縮傳輸的,因此,會消耗一些cpu資源
2.8.2 壓縮的物件:
純文字內容壓縮比很高,因此,純文字的內容最好要壓縮
被壓縮的純文字檔案必須要大於1KB,由於壓縮演算法的特殊原因,極小的檔案壓縮反而變大
圖片、視訊(流媒體)等檔案儘量不要壓縮,因為這些檔案大多都是經過壓縮的,如果再壓縮很可能不會減小或減小很少,或者有可能增大,而在壓縮時還會消耗大量的CPU、記憶體資源
2.8.3 引數介紹及配置說明:
gzip on; #表示開啟壓縮功能
gzip_min_length 1k; #表示允許壓縮的頁面最小位元組數,頁面位元組數從header頭的Content-Length中獲取。預設值是0,表示不管頁面多大都進行壓縮,建議設定成大於1K。如果小於1K可能會越壓越大
gzip_buffers 432k; #壓縮快取區大小
gzip_http_version 1.1; #壓縮版本
gzip_comp_level 9; #壓縮比率
gzip_types text/css text/xml application/javascript; #指定壓縮的型別
gzip_vary on; #vary header支援
完美配置:
nginx.conf http模組 gzip on; gzip_min_length 1k; gzip_buffers 4 32k; gzip_http_version 1.1; gzip_comp_level 9; gzip_types text/css text/xml application/javascript; gzip_vary on;
2.9 nginx expires功能
為使用者訪問網站的內容設定一個過期時間,當用戶第一次訪問到這些內容時,會把這些內容儲存在使用者瀏覽器本地,這樣使用者第二次及之後繼續訪問該網站,瀏覽器就會檢查已經快取在使用者瀏覽器本地的內容,就不會去瀏覽器下載了,直到快取的內容過期或者被清除為止。
2.9.1 expires作用和優點:
expires可以降低網站的頻寬,節約成本
加快使用者訪問網站的速度,提升了使用者訪問體驗
伺服器訪問量降低,伺服器壓力就減輕了,伺服器的成本也會降低,甚至可以節約人力成本
幾乎對於所有web服務來說,這是非常重要的功能之一,apache服務也有此功能。
2.9.2 nginx expires 配置詳解:
## Add expires header according to URI(path or dir). location ~ ^/(images|javascript|js|css|flash|media|static)/ { expires 360d; }
2.9.3 expire缺點及解決辦法:
當網站被快取的頁面或資料更新了,此時使用者端看到的可能還是舊的已經快取的內容,這樣就會影響使用者體驗,那麼如何解決這個問題呢?
第一:對於經常需要的變動圖片等檔案,可以縮短物件快取時間,例如,百度、谷歌等網站的首頁圖片經常會換成一些節日的圖,這裡可以將快取期修改為1天
第二:當網站改版或更新內容時,可以在伺服器將快取的物件改名(網站程式碼程式)
對於網站的圖片、附件,一般不會被使用者直接修改,使用者層面上的修改圖片,實際上是重新傳到伺服器,雖然內容一樣但是一個新的圖片名了
網站改版升級會修改JS、CSS元素,若改版的時候對這些元素改了名,會使得前端的CDN以及使用者端需要重新快取內容
3. nginx日誌的優化
3.1 編寫指令碼實現日誌輪詢
編寫指令碼實現nginx access日誌輪詢
使用者咋請求一個軟體時,絕大多數軟體都會記錄使用者的訪問情況,nginx軟體目前沒有類似apache通過cronolog或者rotatelog對日誌分隔處理的功能,但是,運維人員可以通過利用指令碼開發、nginx的訊號控制功能或reload重新載入,來實現日誌的自動切割、輪詢。
操作步驟:
寫一個定時任務
mv www_access.log www_access_$(date +F -d -1day).log /usr/local/nginx/sbin/nginx -s reload
3.2 不記錄不需要的日誌
在實際工作中,對於負載均衡器健康檢查節點或某些特定的檔案(圖片、JS、CSS)的日誌,一般不需要記錄下來,因為在統計PV時是按照頁面計算的,而且日誌寫入的太頻繁會消耗磁碟i/o,降低服務的效能
具體配製方法: location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF)$ { access_log off; }
3.3訪問日誌的許可權設定
假如日誌目錄為/app/logs,則授權方法為:
chown -R root.root /usr/local/nginx/logs chmod -R 600 /usr/local/nginx/logs
不需要在日誌目錄上給nginx使用者讀寫或者讀寫許可,很多人都沒有注意這個問題,這就稱為了安全隱患。
4. nginx站點目錄及檔案URL訪問控制
4.1 根據副檔名限制程式和檔案訪問
web2.0時代,絕大多數網站都是以使用者為中心的,這些產品有一些共同點,就是不允許使用者釋出內容到伺服器,還允許使用者發圖片甚至附件上傳到伺服器上,給使用者開啟了上傳的功能。帶來了很大的安全隱患。
下面將利用nginx配置禁止訪問上傳資源目錄下的PHP,SHELL,PERL,PYTHON程式檔案,這樣就算是使用者上傳了木馬檔案也沒辦法執行
1 location ~ ^/images/.*\.(php|php5|.sh|.pl|.py)$ 2 { 3 deny all; 4 } 5 location ~ ^/static/.*\.(php|php5|.sh|.pl|.py)$ 6 { 7 deny all; 8 } 9 location ~* ^/data/(attachment|avatar)/.*\.(php|php5)$ 10 { 11 deny all; 12 }
對於上述目錄的限制必須寫在nginx處理PHP服務配置的前面
4.2 禁止訪問指定目錄下的所有檔案和目錄
配置禁止訪問指定的單個或多個目錄
location ~ ^/(static)/ { deny all; } location ~ ^/static { deny all; }
禁止訪問目錄並且返回程式碼404
server { listen 80; server_name www.etiantian.org etiantian.org; root /data0/www/www; index index.html index.htm; access_log /app/logs/www_access.log commonlog; location /admin/ { return 404; } location /templates/ { return 403; } }
4.3 限制網站來源的IP訪問
使用ngx_http_access_module限制網站來源IP訪問。
範例1:禁止外界訪問,但允許某個IP訪問該目錄
location ~ ^/oldboy/ { allow 202.111.12.211; deny all; }
範例2:限制及指定IP或IP段訪問。
location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; deny all; }
4.4 配置nginx禁止非法域名解析訪問企業網站
問題:nginx如何防止使用者IP訪問網站(惡意域名解析,相當於直接使用IP訪問網站)
方法1:直接報錯,使用者體驗不好
server { listen 80 default_server; server_name _; return 501; }
方法2:通過301跳轉到主頁
server { listen 80 default_server; server_name _; rewrite ^(.*) http//:blog.etiantian.org/$1 permanent; }
5. nginx圖片防盜鏈解決方案。
簡單的說,沒有經過你的允許在自己網站嵌入你的圖片。
5.1 常見的防盜鏈解決方案的基本原理
- 根據HTTP referer實現防盜鏈
- 根據cookie防盜鏈
5.2 防盜鏈實戰
被盜鏈的網站配置
1 #Preventing hot linking of images and other file types 2 3 location ~* ^.+\.(jpg|png|swf|flv|rar|zip)$ { 4 5 valid_referers none blocked *.etiantian.org etiantian.org; 6 7 if ($invalid_referer) { 8 9 rewrite ^/ http://bbs.etiantian.org/img/nolink.gif; 10 11 } 12 13 root html/www; 14 15 }雲伺服器、雲資料庫方案、網路安全防護優選
6. nginx錯誤頁面的優雅顯示
範例:當出現403錯誤會跳轉到403.html頁面
error_page 403 /403.html;
7. nginx站點目錄檔案及目錄許可權優化
8. 部署網站程式許可權設定
(1)wordpress站點目錄許可權設定
方案1:推薦方案
目錄:755
檔案:644
所有者:root
圖片及上傳目錄設定所有者為www
cd /application/apache/html/ chown -R root.root blog find ./blog/ -type f|xargs chmod 644 find ./blog/ -type d|xargs chmod 755
9. nginx防爬蟲優化
配置
if ($http_user_agent ~* LWP:Simple|BBBike|wget) { return 403 ; rewrite ^(.*) http://blog.etiantian.org/$1 permanent; }
10. 利用nginx限制HTTP的請求方法
配置:
if ($request_method !~ ^(GET|HEAD|POST)$ ) { return 501; }
配置上傳伺服器限制HTTP的GET的配置
#Only allow these request methods ## if ($request_method ~*(GET)$ ) { return 501; }
相關推薦
Nginx配置及linux系統記憶體高併發多方面優化
基於網上的技術文章思路,自己加以整理,有常用的和不常用的策略,供參考。
nginx的優化
1. gzip壓縮優化
2. expires快取有還
3. 網路IO事件模型優化
4. 隱藏軟體名稱和版本號
5. 防盜鏈優化
6. 禁止惡
SpringCloud註冊中心叢集化及如何抗住大型系統的高併發訪問
一、場景引入
本人所在的專案由於直接面向消費者,迭代週期迅速,所以服務端框架一直採用Springboot+dubbo的組合模式,每個服務由service模組+web模組構成,service模組通過公司API閘道器向安卓端暴
露r
Linux伺服器java程序佔用系統記憶體高
使用top命令檢視系統資源的使用情況,命令:top 如圖可以看到java的程序記憶體使用率較高,java程序的記憶體使用率達到了70%+
2.定位執行緒問題(通過命令檢視9718程序的執行緒情況),命令:ps p 9718 -L -o pcpu,pmem,pid,tid,time
FastDFS+nginx+tomcat在linux系統的配置
系統環境:Centos 6.5
nginx版本:nginx-1.8.1
FastDFS版本:FastDFS_v5.05.tar
java版本:jdk-7u80-linux-x64.tar
tomcat版本:apache-tomcat-7.0.78
1.Nginx
1.1 N
Linux系統管理——高級文件系統管理
vgexport 模塊 方便 isp 高級 username 容量 磁盤故障 proc 1、設定文件系統配額1.1、要求 在內核中執行
以文件系統為單位啟用
對不同組或者用戶的策略不同
根據塊或者節點進行限制
執行軟限制
Linux系統CPU高負載處理
linux cpu 負載公司在阿裏雲的Linux服務器CPU負載高達90幾,太嚇人了,現在把處理的過程記錄如下:1 通過top定位到耗費CPU資源較多的進程,假設進程名為“abc”,PID為1112 定位到進程目錄下 cd /proc/111 ll exe3 如果發現不是正常的應用,可以直接刪除對應的可
java web系統在高併發下如何實現訂單號生成唯一?
java web系統在高併發下如何實現訂單號生成唯一?
系統訂單號規則:XXXX(固定字元)+年(後兩位)月日+流水號。流水號每天重新從1開始。 系統訂單號產生唯一的方案有哪幾種?由於訂單號規則已經確定,無法使用時間戳及隨機數,有哪些方案可以使用? 注:資料庫mysql,訂單號不是訂單表的主鍵
Nginx介紹及linux下的安裝
是什麼?
高效能HTTP伺服器/反向代理伺服器。
用途?
HTTP伺服器,做靜態資源(靜態網頁,圖片等)伺服器。
虛擬主機,實現一臺伺服器虛擬多個小網站。
反向代理、負載均衡,多臺伺服器叢集需要Nginx做反向代理,使伺服器之間負載均衡。
安裝?
1.安裝環境及依賴包
秒殺系統模擬高併發
1.初始方案
(1)表設計
商品表設計:熱銷商品提供給使用者秒殺,有初始庫存。
import java.io.Serializable;
/**
* t_seckillgoods
* @author
*/
public class TSeckillgoods imple
Linux系統——Keepalived高可用叢集
#### keepalived服務的三個重要功能1. 管理LVS負載均衡軟體Keepalived可以通過讀取自身的配置檔案,實現通過更底層的介面直接管理LVS的配置以及控制服務的啟動,停止功能,這使得LVS的應用更加簡單方便。2. 實現對LVS叢集節點健康檢查功能(healthcheck)Keepalived
Linux系統——Keepalived高可用集群
早期 boot 直接 label ip地址 誰是 otp 交換 開發 #### keepalived服務的三個重要功能1. 管理LVS負載均衡軟件Keepalived可以通過讀取自身的配置文件,實現通過更底層的接口直接管理LVS的配置以及控制服務的啟動,停止功能,這使得LV
電商大資料分析平臺(三)nginx配置及flume讀取日誌資訊
一、nginx配置
在本專案中nginx的作用只是接收客戶端傳送的事件,並將相應的session寫入日誌檔案中,所以配置較為簡單,只需要配置寫入的日誌檔案和寫入的格式
1.地址配置
server {
listen
Linux的遠端連線及Linux系統下Tomcat部署
Linux的遠端需要用的軟體有Xshell,Xftp
本人使用VMware12Pro虛擬機器,Linux系統為CentOS7,使用區域網進行遠端連線
Xshell和Xftp沒有安裝的話可以取官網下載,但Xshell需要驗證資訊,所以也可以去360電腦軟體下載
在VMwa
Linux系統記憶體管理之夥伴系統分析
1.夥伴系統概念
夥伴系統是一種經典的記憶體管理方法。Linux夥伴系統的引入為核心提供了一種用於分配一組連續的頁而建立的一種高效的分配策略,並有效的解決了外碎片問題。
2.夥伴系統的組織結構
Linux中的記憶體管理的“頁”大小為4KB。把所有的空閒頁分組
Linux系統記憶體磁碟初始化技術詳細解析
轉http://unix-cd.com/unixcd12/article_6520.html
initrd掛載優先順序高於真實根檔案系統,它被邦定在核心上,做為核心啟動過程的一部分被載入(load)。然後,做為兩階段引導過程的第一部分,核心掛載(mount)initrd,用
tomcat高併發下優化詳解及連線數和執行緒池
高併發環境下,我知道優化配置tomcat,對連線數和執行緒池作修改,最重要的是connector的協議Http Connector使用NIO,而不是預設的AJP Connector,當時也沒有仔細研究其原理。現在來為以上這些設定做一下剖析。
要了解這些,不能避開tomcat
【Django】Uwsgi+Nginx+Django2.0+Python3.7實現高併發,多執行緒,高效能
一、系統以及環境
伺服器系統:Ubuntu 16.04
專案環境:python 3.7
框架:Django2.0
伺服器環境:Uwsgi、Nginx
效能監測工具:Uwsgitop
使用背景:因為Dj
虛擬機創建及Linux系統安裝
分享圖片 linu -o proc 安裝步驟 nag img log 虛擬機vm 系統:Red Hat Linux 7.0虛擬機:VMware 12.0
題目:要求在虛擬機VMware12裏面最小化安裝Red Hat Linux7.0版本系統,並寫出相應安裝步驟
一
正確計算linux系統記憶體使用率
圖中的例子很典型,就是:多數的linux系統在free命令後會發現free(剩餘)的記憶體很少,而自己又沒有開過多的程式或服務。對於上述的情況,正確的解釋是:linux的記憶體管理機制與windows的有所不同。具體的機制我們無需知道,我們需要知道的是,linux的記憶體管理機制的思想包括(不
系統技術非業餘研究 » Linux系統記憶體相關資訊獲取
大型的伺服器,特別是資料庫伺服器的主要瓶頸主要在記憶體,CPU,以及IO上。CPU是可再生資源,不夠用等等就有了;記憶體和土地一樣是不可再生資源,被佔用了,後續的使用必須等到該資源釋放.而IO也非常依賴於記憶體的使用情況,故記憶體的倒騰效率會大大影響伺服器的效率,那麼瞭解伺服器記憶體的使用情況就非
Nginx配置及linux系統記憶體高併發多方面優化
基於網上的技術文章思路,自己加以整理,有常用的和不常用的策略,供參考。 nginx的優化 1. gzip壓縮優化 2. expires快取有還 3. 網路IO事件模型優化 4. 隱藏軟體名稱和版本號 5. 防盜鏈優化 6. 禁止惡
SpringCloud註冊中心叢集化及如何抗住大型系統的高併發訪問
一、場景引入 本人所在的專案由於直接面向消費者,迭代週期迅速,所以服務端框架一直採用Springboot+dubbo的組合模式,每個服務由service模組+web模組構成,service模組通過公司API閘道器向安卓端暴 露r
Linux伺服器java程序佔用系統記憶體高
使用top命令檢視系統資源的使用情況,命令:top 如圖可以看到java的程序記憶體使用率較高,java程序的記憶體使用率達到了70%+ 2.定位執行緒問題(通過命令檢視9718程序的執行緒情況),命令:ps p 9718 -L -o pcpu,pmem,pid,tid,time
FastDFS+nginx+tomcat在linux系統的配置
系統環境:Centos 6.5 nginx版本:nginx-1.8.1 FastDFS版本:FastDFS_v5.05.tar java版本:jdk-7u80-linux-x64.tar tomcat版本:apache-tomcat-7.0.78 1.Nginx 1.1 N
Linux系統管理——高級文件系統管理
vgexport 模塊 方便 isp 高級 username 容量 磁盤故障 proc 1、設定文件系統配額1.1、要求 在內核中執行 以文件系統為單位啟用 對不同組或者用戶的策略不同 根據塊或者節點進行限制 執行軟限制
Linux系統CPU高負載處理
linux cpu 負載公司在阿裏雲的Linux服務器CPU負載高達90幾,太嚇人了,現在把處理的過程記錄如下:1 通過top定位到耗費CPU資源較多的進程,假設進程名為“abc”,PID為1112 定位到進程目錄下 cd /proc/111 ll exe3 如果發現不是正常的應用,可以直接刪除對應的可
java web系統在高併發下如何實現訂單號生成唯一?
java web系統在高併發下如何實現訂單號生成唯一? 系統訂單號規則:XXXX(固定字元)+年(後兩位)月日+流水號。流水號每天重新從1開始。 系統訂單號產生唯一的方案有哪幾種?由於訂單號規則已經確定,無法使用時間戳及隨機數,有哪些方案可以使用? 注:資料庫mysql,訂單號不是訂單表的主鍵
Nginx介紹及linux下的安裝
是什麼? 高效能HTTP伺服器/反向代理伺服器。 用途? HTTP伺服器,做靜態資源(靜態網頁,圖片等)伺服器。 虛擬主機,實現一臺伺服器虛擬多個小網站。 反向代理、負載均衡,多臺伺服器叢集需要Nginx做反向代理,使伺服器之間負載均衡。 安裝? 1.安裝環境及依賴包
秒殺系統模擬高併發
1.初始方案 (1)表設計 商品表設計:熱銷商品提供給使用者秒殺,有初始庫存。 import java.io.Serializable; /** * t_seckillgoods * @author */ public class TSeckillgoods imple
Linux系統——Keepalived高可用叢集
#### keepalived服務的三個重要功能1. 管理LVS負載均衡軟體Keepalived可以通過讀取自身的配置檔案,實現通過更底層的介面直接管理LVS的配置以及控制服務的啟動,停止功能,這使得LVS的應用更加簡單方便。2. 實現對LVS叢集節點健康檢查功能(healthcheck)Keepalived
Linux系統——Keepalived高可用集群
早期 boot 直接 label ip地址 誰是 otp 交換 開發 #### keepalived服務的三個重要功能1. 管理LVS負載均衡軟件Keepalived可以通過讀取自身的配置文件,實現通過更底層的接口直接管理LVS的配置以及控制服務的啟動,停止功能,這使得LV
電商大資料分析平臺(三)nginx配置及flume讀取日誌資訊
一、nginx配置 在本專案中nginx的作用只是接收客戶端傳送的事件,並將相應的session寫入日誌檔案中,所以配置較為簡單,只需要配置寫入的日誌檔案和寫入的格式 1.地址配置 server { listen
Linux的遠端連線及Linux系統下Tomcat部署
Linux的遠端需要用的軟體有Xshell,Xftp 本人使用VMware12Pro虛擬機器,Linux系統為CentOS7,使用區域網進行遠端連線 Xshell和Xftp沒有安裝的話可以取官網下載,但Xshell需要驗證資訊,所以也可以去360電腦軟體下載 在VMwa
Linux系統記憶體管理之夥伴系統分析
1.夥伴系統概念 夥伴系統是一種經典的記憶體管理方法。Linux夥伴系統的引入為核心提供了一種用於分配一組連續的頁而建立的一種高效的分配策略,並有效的解決了外碎片問題。 2.夥伴系統的組織結構 Linux中的記憶體管理的“頁”大小為4KB。把所有的空閒頁分組
Linux系統記憶體磁碟初始化技術詳細解析
轉http://unix-cd.com/unixcd12/article_6520.html initrd掛載優先順序高於真實根檔案系統,它被邦定在核心上,做為核心啟動過程的一部分被載入(load)。然後,做為兩階段引導過程的第一部分,核心掛載(mount)initrd,用
tomcat高併發下優化詳解及連線數和執行緒池
高併發環境下,我知道優化配置tomcat,對連線數和執行緒池作修改,最重要的是connector的協議Http Connector使用NIO,而不是預設的AJP Connector,當時也沒有仔細研究其原理。現在來為以上這些設定做一下剖析。 要了解這些,不能避開tomcat
【Django】Uwsgi+Nginx+Django2.0+Python3.7實現高併發,多執行緒,高效能
一、系統以及環境 伺服器系統:Ubuntu 16.04 專案環境:python 3.7 框架:Django2.0 伺服器環境:Uwsgi、Nginx 效能監測工具:Uwsgitop 使用背景:因為Dj
虛擬機創建及Linux系統安裝
分享圖片 linu -o proc 安裝步驟 nag img log 虛擬機vm 系統:Red Hat Linux 7.0虛擬機:VMware 12.0 題目:要求在虛擬機VMware12裏面最小化安裝Red Hat Linux7.0版本系統,並寫出相應安裝步驟 一
正確計算linux系統記憶體使用率
圖中的例子很典型,就是:多數的linux系統在free命令後會發現free(剩餘)的記憶體很少,而自己又沒有開過多的程式或服務。對於上述的情況,正確的解釋是:linux的記憶體管理機制與windows的有所不同。具體的機制我們無需知道,我們需要知道的是,linux的記憶體管理機制的思想包括(不
系統技術非業餘研究 » Linux系統記憶體相關資訊獲取
大型的伺服器,特別是資料庫伺服器的主要瓶頸主要在記憶體,CPU,以及IO上。CPU是可再生資源,不夠用等等就有了;記憶體和土地一樣是不可再生資源,被佔用了,後續的使用必須等到該資源釋放.而IO也非常依賴於記憶體的使用情況,故記憶體的倒騰效率會大大影響伺服器的效率,那麼瞭解伺服器記憶體的使用情況就非