cpu 資源的調優
調整nice值改變程序優先順序
1.nice 概述:在 linux 系統中,nice 值的範圍從-20 到+19(不同系統的值範圍是不一樣的),正值表示低優先順序,負值表示高優先順序,值為零則表示不會調整該程序的優先順序。具有最高優先順序的程式,
其 nice 值最低,所以在 linux 系統中,值-20 使得一項任務變得非常重要;與之相反,如果任務的 nice為+19,則表示它是乙個高尚的、無私的任務,允許所有其他任務比自己享有寶貴的 cpu 時間的更大使用份額,這也就是 nice 的名稱的來意。預設優先順序是 0
2.在命令執行前,調整程序 nice 值,讓程序使用更多的 cpu
nice -n 優先順序數字 命令
nice -n -5 vim a.txt
top -p pid
3.使用 renice 修改正在執行的程序的優先順序
renice -n 5 pid #修改程序優先順序
renice -n 6 pid
程序優先順序不可以超過 -20 到 19 範圍
4.設 置 進 程 的 cpu 親 和 力
taskset 作用:在多核的情況下,可以認為指定乙個程序在哪顆 cpu 上執行程式,減少程序在不同cpu 之前切換的開銷。
yum install util-linux
taskset 語法: taskset -cp [cpu id 號] 命令或程序 id
-p, --pid 在已經存在的 pid 上操作
-c, --cpu-list 以列**式顯示和指定 cpu
taskset -c 0 vim a.txt #第乙個 cpu 的 id 是 0
ps -axu | grep vim —> taskset -cp pid
有關磁碟 i/o 的調優
ulimit 資 源 限 制
限制使用者資源配置檔案:/etc/security/limits.conf
每行的格式:使用者名稱/@使用者組名 型別(軟限制/硬限制) 選項 值
* soft nofile 1024000
* hard nofile 1024000
soft 是乙個警告值,而 hard 則是乙個真正意義的閥值,超過就會報錯。一般把 soft 和 hard 都配置成一樣的值。 最大開啟的檔案數以檔案描敘符 file descripter 計數)
ulimit -n #檢視乙個程序可以開啟的檔案數
reboot重啟後,/etc/security/limits.conf配置生效
ulimit -n 10000 #臨時修改,不需重啟
nproc #配置乙個使用者可以開啟的最大程序數
vim /etc/security/limits.d/20-nproc.conf
* soft nproc 65535
* hard nproc 65535
ulimit -u 6553 #臨時修改
查 看 所 有 的 資 源 限 制 信 息
ulimit -a
測 試 硬 盤 速 度
一般情況下使用 hdparm 來測試磁碟順序讀的速度。dd 命令用來測試磁碟順序寫的速度
1、hdparm 命令常用引數
引數:-t perform device read timings #不使用預先的資料緩衝, 標示了 linux 下沒有任何檔案系統開銷時磁碟可以支援多快的連續資料讀取. perform [pəˈfɔ:m] #執行
–direct use o_direct to bypass page cache for timings #直接繞過快取進行統計資料
2、測試硬碟讀速度
hdparm -t --direct /dev/sda
3、使用 dd 命令測試磁碟 io 的順序寫和讀速度
在使用前首先了解兩個特殊裝置:/dev/null 偽裝置,**站.寫該檔案不會產生 io 開銷;/dev/zero 偽裝置,會產生空字元流,讀該檔案不會產生 io 開銷
4、使用 dd 測試磁碟的 io 順序寫速度
dd if=/dev/zero of=/test.dbf bs=1m count=2000 oflag=direct,nonblock
系統核心相關引數調優
syn攻擊是利用tcp/ip協議3次握手的原理,傳送大量的建立連線的網路包,但不實際建立連線,最終導致被攻擊伺服器的網路佇列被佔滿,無法被正常使用者訪問
vim /etc/sysctl.conf #在檔案最後新增以下內容
net.ipv4.tcp_synack_retries = 0
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_max_syn_backlog = 20480
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 10
fs.file-max = 819200
net.core.somaxconn = 65535
net.core.rmem_max = 1024123000
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 165536
net.ipv4.ip_local_port_range = 10000 65535
注:每台伺服器上線之前,都應該配置以上核心引數
cat /proc/sys/net/ipv4/tcp_synack_retries #最關鍵引數,預設為5,修改為0 表示不要重發
net.ipv4.tcp_synack_retries = 0
#表示回應第二個握手包(syn+ack包)給客戶端ip後,如果收不到第三次握手包(ack包)後,不進行重試,加快**「半連線」,不要耗光資源
#作為服務端。回應時,如果連線失敗,達到對應的失敗數後,停止傳送synack包
不修改這個引數,模擬攻擊,10秒後被攻擊的80埠即無法服務,機器難以ssh登入; 用命令netstat -na |grep syn_recv檢測「半連線」hold住180秒
cat /proc/sys/net/ipv4/tcp_syn_retries
#tcp_syn_retries引數,預設是5,當沒有收到伺服器端的syn+ack包時,客戶端重發syn握手包的次數。
cat /proc/sys/net/ipv4/tcp_max_syn_backlog
#系統允許的檔案控制代碼的最大數目,因為連線需要占用檔案
fs.file-max = 819200
#用來應對突發的大併發connect 請求
net.core.somaxconn = 65535 #最大的tcp 資料接收緩衝(位元組)
net.core.rmem_max = 1024123000
#最大的tcp 資料傳送緩衝(位元組)
net.core.wmem_max = 16777216
#網路裝置接收資料報的速率比核心處理這些包的速率快時,允許送到佇列的資料報的最大數目
net.core.netdev_max_backlog = 165536
#本機主動連線其他機器時的埠分配範圍,比如說,在vsftpd主動模式會用到
net.ipv4.ip_local_port_range = 10000 65535
次 要 輔 助 參 數
以上還無法解決syn洪水攻擊,把以下核心引數關閉:
注意,以下引數面對外網時,不要開啟。因為***很明顯。 #當出現 半連線 佇列溢位時向對方傳送syncookies,調大 半連線 佇列後沒必要
net.ipv4.tcp_syncookies = 0
#time_wait狀態的連線重用功能
net.ipv4.tcp_tw_reuse = 0
#時間戳選項,與前面net.ipv4.tcp_tw_reuse引數配合
net.ipv4.tcp_timestamps = 0
#time_wait狀態的連線**功能
net.ipv4.tcp_tw_recycle = 0
#表示開啟syn cookies。當出現syn等待佇列溢位時,啟用cookies來處理,可防範少量syn攻擊,預設為0,表示關閉
#表示開啟重用。允許將time-wait sockets重新用於新的tcp連線,預設為0,表示關閉,現在開啟,改為1
#表示開啟tcp連線中time-wait sockets的快速**,預設為0,表示關閉。現在改為1,表示開啟
#預設值是 60,對於本端斷開的socket連線,tcp保持在fin_wait_2狀態的時間
Linux系統調優
1 selinux 修改selinux配置檔案,vi etc selinux config selinux disabled 必須重啟後生效,但可使用setenforce臨時生效來關閉 setenforce 0 2 lnittab 配置檔案在 etc inittab,centos7後使用syetem...
linux系統之核心調優
1 編輯核心配置檔案 永久性 vim etc sysctl.con2 引數及簡單說明 net.ipv4.tcp fin timeout 2 保持在fin wait 2狀態的時間,使系統可以處理更多的連線。此引數值為整數,單位為秒。net.ipv4.tcp tw reuse 1 開啟重用,允許將tim...
Winform 系統調優
小白鼠條件 以常見的樹形結構樹為例 有兩張結構相同的表table1 1w資料 table2 2w資料 需要對比資料差異。表結構如下 id parent id,col1,col2,col3 常規做法是 常規思想 迴圈table1,一 充分利用快取效果 作業系統的快取記憶體 磁碟快取等等,都是利用混存技...