sysctl.conf工作原理

2019獨角獸企業重金招聘Python工程師標準>>> hot3.png

sysctl.conf工作原理

?

sysctl命令被用于在內核運行時動態地修改內核的運行參數,可用的內核參數在目錄/proc/sys中。它包含一些TCP/IP堆棧和虛擬內存系統的高級選項, 這可以讓有經驗的管理員提高引人注目的系統性能。用sysctl可以讀取設置超過五百個系統變量。

limits.conf設置

1)暫時生效,適用于通過?ulimit?命令登錄 shell 會話期間

 ulimit -SHn 65535

2)永久生效,通過將一個相應的 ulimit 語句添加到由登錄 shell 讀取的文件之一(例如 ~/.profile),即特定于 shell 的用戶資源文件;或者通過編輯/etc/security/limits.conf

#比如添加到/etc/profile
echo ulimit -SHn 65535 >> /etc/profile
source /etc/profile#修改最大進程和最大文件打開數限制
vi /etc/security/limits.conf
* soft nproc 11000
* hard nproc 11000
* soft nofile 655350
* hard nofile 655350

sysctl.conf設置

?

#優化TCP
vi /etc/sysctl.conf
#禁用包過濾功能 
net.ipv4.ip_forward = 0  
#啟用源路由核查功能 
net.ipv4.conf.default.rp_filter = 1  
#禁用所有IP源路由 
net.ipv4.conf.default.accept_source_route = 0  
#使用sysrq組合鍵是了解系統目前運行情況,為安全起見設為0關閉
kernel.sysrq = 0  
#控制core文件的文件名是否添加pid作為擴展
kernel.core_uses_pid = 1  
#開啟SYN Cookies,當出現SYN等待隊列溢出時,啟用cookies來處理
net.ipv4.tcp_syncookies = 1  
#每個消息隊列的大小(單位:字節)限制
kernel.msgmnb = 65536  
#整個系統最大消息隊列數量限制
kernel.msgmax = 65536  
#單個共享內存段的大小(單位:字節)限制,計算公式64G*1024*1024*1024(字節)
kernel.shmmax = 68719476736  
#所有內存大小(單位:頁,1頁 = 4Kb),計算公式16G*1024*1024*1024/4KB(頁)
kernel.shmall = 4294967296  
#timewait的數量,默認是180000
net.ipv4.tcp_max_tw_buckets = 6000  
#開啟有選擇的應答
net.ipv4.tcp_sack = 1  
#支持更大的TCP窗口. 如果TCP窗口最大超過65535(64K), 必須設置該數值為1
net.ipv4.tcp_window_scaling = 1  
#TCP讀buffer
net.ipv4.tcp_rmem = 4096 131072 1048576
#TCP寫buffer
net.ipv4.tcp_wmem = 4096 131072 1048576   
#為TCP socket預留用于發送緩沖的內存默認值(單位:字節)
net.core.wmem_default = 8388608
#為TCP socket預留用于發送緩沖的內存最大值(單位:字節)
net.core.wmem_max = 16777216  
#為TCP socket預留用于接收緩沖的內存默認值(單位:字節)  
net.core.rmem_default = 8388608
#為TCP socket預留用于接收緩沖的內存最大值(單位:字節)
net.core.rmem_max = 16777216
#每個網絡接口接收數據包的速率比內核處理這些包的速率快時,允許送到隊列的數據包的最大數目
net.core.netdev_max_backlog = 262144  
#web應用中listen函數的backlog默認會給我們內核參數的net.core.somaxconn限制到128,而nginx定義的NGX_LISTEN_BACKLOG默認為511,所以有必要調整這個值
net.core.somaxconn = 262144  
#系統中最多有多少個TCP套接字不被關聯到任何一個用戶文件句柄上。這個限制僅僅是為了防止簡單的DoS攻擊,不能過分依靠它或者人為地減小這個值,更應該增加這個值(如果增加了內存之后)
net.ipv4.tcp_max_orphans = 3276800  
#記錄的那些尚未收到客戶端確認信息的連接請求的最大值。對于有128M內存的系統而言,缺省值是1024,小內存的系統則是128
net.ipv4.tcp_max_syn_backlog = 262144  
#時間戳可以避免序列號的卷繞。一個1Gbps的鏈路肯定會遇到以前用過的序列號。時間戳能夠讓內核接受這種“異常”的數據包。這里需要將其關掉
net.ipv4.tcp_timestamps = 0  
#為了打開對端的連接,內核需要發送一個SYN并附帶一個回應前面一個SYN的ACK。也就是所謂三次握手中的第二次握手。這個設置決定了內核放棄連接之前發送SYN+ACK包的數量
net.ipv4.tcp_synack_retries = 1  
#在內核放棄建立連接之前發送SYN包的數量
net.ipv4.tcp_syn_retries = 1  
#開啟TCP連接中time_wait sockets的快速回收
net.ipv4.tcp_tw_recycle = 1  
#開啟TCP連接復用功能,允許將time_wait sockets重新用于新的TCP連接(主要針對time_wait連接)
net.ipv4.tcp_tw_reuse = 1  
#1st低于此值,TCP沒有內存壓力,2nd進入內存壓力階段,3rdTCP拒絕分配socket(單位:內存頁)
net.ipv4.tcp_mem = 94500000 915000000 927000000   
#如果套接字由本端要求關閉,這個參數決定了它保持在FIN-WAIT-2狀態的時間。對端可以出錯并永遠不關閉連接,甚至意外當機。缺省值是60 秒。2.2 內核的通常值是180秒,你可以按這個設置,但要記住的是,即使你的機器是一個輕載的WEB服務器,也有因為大量的死套接字而內存溢出的風險,FIN- WAIT-2的危險性比FIN-WAIT-1要小,因為它最多只能吃掉1.5K內存,但是它們的生存期長些。
net.ipv4.tcp_fin_timeout = 15  
#表示當keepalive起用的時候,TCP發送keepalive消息的頻度(單位:秒)
net.ipv4.tcp_keepalive_time = 30  
#對外連接端口范圍
net.ipv4.ip_local_port_range = 2048 65000
#表示文件句柄的最大數量
fs.file-max = 102400

?

其他設置

可以通過/etc/sysctl.conf控制和配置Linux內核及網絡設置。


# 避免放大攻擊
net.ipv4.icmp_echo_ignore_broadcasts = 1

# 開啟惡意icmp錯誤消息保護
net.ipv4.icmp_ignore_bogus_error_responses = 1

# 開啟SYN洪水攻擊保護
net.ipv4.tcp_syncookies = 1

# 開啟并記錄欺騙,源路由和重定向包
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1

# 處理無源路由的包
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# 開啟反向路徑過濾
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 確保無人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

# 不充當路由器
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

# 開啟execshild
kernel.exec-shield = 1
kernel.randomize_va_space = 1

# IPv6設置
net.ipv6.conf.default.router_solicitations = 0
net.ipv6.conf.default.accept_ra_rtr_pref = 0
net.ipv6.conf.default.accept_ra_pinfo = 0
net.ipv6.conf.default.accept_ra_defrtr = 0
net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.dad_transmits = 0
net.ipv6.conf.default.max_addresses = 1

# 優化LB使用的端口

# 增加系統文件描述符限制
fs.file-max = 65535

# 允許更多的PIDs (減少滾動翻轉問題); may break some programs 32768
kernel.pid_max = 65536

# 增加系統IP端口限制
net.ipv4.ip_local_port_range = 2000 65000

# 增加TCP最大緩沖區大小
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608

# 增加Linux自動調整TCP緩沖區限制
# 最小,默認和最大可使用的字節數
# 最大值不低于4MB,如果你使用非常高的BDP路徑可以設置得更高

# Tcp窗口等
net.core.rmem_max = 8388608
net.core.wmem_max = 8388608
net.core.netdev_max_backlog = 5000

net.ipv4.tcp_window_scaling = 1

?

?

轉載于:https://my.oschina.net/yonghan/blog/856314

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/282622.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/282622.shtml
英文地址,請注明出處:http://en.pswp.cn/news/282622.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

CDN加速

一、CDN的概念 全稱是Content Delivery Network,即內容分發網絡。 其基本思路是: 盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。 通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智…

修復刪除/var/lib/dpkg目錄后,無法使用apt-get命令問題

2019獨角獸企業重金招聘Python工程師標準>>> Unfortunately Ive deleted dpkg directory while removing the lock. By mistake I typed rootsam:~$ rm -r /var/lib/dpkgNow when I am trying to install/uninstall packages it shows me following error. E: Could…

動態加載vs靜態加載

動態加載: 1:靈活,可以在需要的時候用LoadLibrary進行加載,在不需要的時候用FreeLibrary進行卸載,這樣可以不必占用內存。2:可以在沒有dll時候發現,而不致程序報錯。3:加載程序中有條…

Webpack前端打包工具

一、安裝 安裝Webpack之前需要安裝nodejs,然后用npm安裝: $ npm install webpack -g &nsbp;運行以上命令就將Webpack安裝到了全局環境中。 但是通常我們會將Webpack只安裝到項目的依賴中: $ cd /www/webpack_demo1 // 進入項目目錄,確保該目錄…

動態語言靜態化

一、什么是動態語言靜態化 將現有PHP等動態語言的邏輯代碼生成為靜態html文件,用戶訪問動態腳本重定向到靜態html的過程 注 : 對實時性要求不高的頁面才適合去做動態語言靜態化 二、為什么要靜態化 1. 動態腳本通常會做邏輯計算和數據查詢,訪問量越大,服務器壓力越大 2. 訪…

WPF-06 樣式(Style)

在我們前面介紹資源的時候&#xff0c;我們提到了樣式表&#xff0c;如果你之前是做Web開發的&#xff0c;你會發現Style有點類似于Web中的CSS。控件級別樣式我們可以在控件級別定義自己的樣式&#xff0c;控件級別的樣式是優先級最高的<Window x:Class"Example_06.Sel…

構建Squid代理服務器-傳統代理、透明代理、反向代理

Squid是Linux系統中最常用的一款開源代理服務軟件&#xff0c;主要提供緩存加速和應用層過濾控制的功能&#xff0c;可以很好的實現HTTP、FTP、DNS查詢以及SSL等應用的緩存代理。 正向代理&#xff1a;根據實現的方式不同&#xff0c;代理服務可分為傳統代理和透明代理。 傳統代…

Struts2之初識

Struts2教程 第一章 初識Struts2 主頁&#xff1a;http://struts.apache.org/ 優勢&#xff1a;用戶請求&#xff0c;模塊處理&#xff0c;頁面展現。適用于企業級開發&#xff0c;便于維護。 配置&#xff1a;web.xml中添加的核心控制器 <filter> <filter-name>St…

數據庫緩存層

一 常見的緩存形式 : 1.文件緩存 (為了避免I/O開銷,盡量使用內存緩存) 2.內存緩存 二 為什么要使用緩存 緩存數據是為了讓客戶端很少甚至不訪問數據庫服務器進行的數據查詢,高并發下,能最大程度降低對數據庫服務器的訪問壓力 一般的數據請求: 用戶請求->數據查詢->…

python面試題~反射,元類,單例

1 什么是反射&#xff1f;以及應用場景&#xff1f; test.py def f1():print(f1) def f2():print(f2) def f3():print(f3) def f4():print(f4) a 1 復制代碼import test as ss ss.f1() ss.f2() print(ss.a) 復制代碼我們要導入另外一個模塊,可以使用import.現在有這樣的需求,我…

僅有50Mb大小的cli即可搞定大廠才能玩的CloudIDE丨SmartIDE

作者&#xff1a;徐磊&#xff0c;開源云原生SmartIDE創始人、LEANOSFT創始人/首席架構師/CEO&#xff0c;微軟最有價值專家MVP/微軟區域技術總監Regional Director&#xff0c;華為云最有價值專家。從事軟件工程咨詢服務超過15年時間&#xff0c;為超過200家不同類型的企業提供…

idea-spark-sbt 打包jar

1、打開idea下的terminal窗口 2、只打包部分項目 sbt insight-import/clean insight-import/assembly 這表示只打包主目錄下的insight-import項目 &#xff0c;先清理&#xff08;clean&#xff09;再打包&#xff08;assembly&#xff09;不能用package&#xff0c;這個不會打…

操作Checkbox標簽

在前端開發中&#xff0c;少不了對Checkbox的操作。 常用的的方法有2個&#xff1a;.is()和.prop()方法。前者是判斷 checkbox的狀態&#xff0c;選不是未選。而后者為checkbox設置一個值&#xff0c;可以設置checkbox是true還是false。寫個小例子&#xff0c;練習一下&#xf…

memcache在項目中的應用

一 安裝memcache 具體流程這篇文章有寫到: 點擊 鏈接 二 在項目中應用memcache 為了減輕數據庫的查詢壓力,所以我們把一些不經常變動的數據進行緩存,用戶查詢時,如果查詢的要求是一樣的,我們就memcache緩存中讀取數據并返回去,如果查詢要求變了,我們再到數據庫中查詢,并將查…

點擊回退按鈕刷新頁面

瀏覽器用戶返回上一步&#xff0c;自動刷新window.οnunlοadfunction(){} 這個最簡單粗暴 方式一、<input type"hidden" id"refreshed" value"no"><script type"text/javascript">οnlοadfunction(){var edocument.getE…

Dapr 證書過期了怎么辦? 別慌,有救!

一、背景Dapr 默認證書有效時間是1年&#xff0c;證書過期后就不能執行相關控制面和數據面的交互了&#xff0c;如下圖&#xff1a;二、查看證書有效時間通過dapr mtls expiry 看到期時間&#xff0c;具體參見命令https://v1-7.docs.dapr.io/reference/cli/dapr-mtls/dapr-mtls…

python數據類型之間的轉換

對python內置的數據類型進行轉換時&#xff0c;可以使用內置函數&#xff0c;常用的類型轉換函數如下 python常用類型轉換函數函數格式使用示例描述int(x [,base])int("8") 可以轉換的包括String類型和其他數字類型&#xff0c;但是會丟失精度 float(x) float…

js高級程序設計的筆記(一)

2019獨角獸企業重金招聘Python工程師標準>>> 1.js中的 null : 如果只意在保存對象的變量還沒有真正的保存對象之前&#xff0c;就需要先把該變量保存 null值&#xff0c; null代表空對象的指針 2.函數的參數對象 arguments的理解。 argument對象的length屬性 實例 f…

Redis在PHP項目中的應用

一 運行redis服務端 出現上圖的圖形,就說明redis服務端開啟成功,并且開啟了密碼功能(如果不加載配置文件,連接redis是不需要密碼的,這樣,會給我們的程序帶來很大隱患) 密碼的設置: 在redis配置文件中,搜索requirepass ,后面設置密碼 比如 : requirepass G506myredis 則表示此…