linux 調優系列

Linux系統內核:修改TCP/IP調優參數

所有的TCP/IP調優參數都位于/proc/sys/net/目錄。例如, 下面是最重要的一些調優參數, 后面是它們的含義:

1. /proc/sys/net/core/rmem_max — 最大的TCP數據接收緩沖。

2. /proc/sys/net/core/wmem_max — 最大的TCP數據發送緩沖。

3. /proc/sys/net/ipv4/tcp_timestamps — 時間戳在(請參考RFC 1323)TCP的包頭增加12個字節。

4. /proc/sys/net/ipv4/tcp_sack — 有選擇的應答。

5. /proc/sys/net/ipv4/tcp_window_scaling — 支持更大的TCP窗口. 如果TCP窗口最大超過65535(64KB), 必須設置該數值為1。

6. rmem_default — 默認的接收窗口大小。

7. rmem_max — 接收窗口的最大大小。

8. wmem_default — 默認的發送窗口大小。

9. wmem_max — 發送窗口的最大大小。

/proc目錄下的所有內容都是臨時性的, 所以重啟動系統后任何修改都會丟失。

建議在系統啟動時自動修改TCP/IP參數:

把下面代碼增加到/etc/rc.local文件, 然后保存文件, 系統重新引導的時候會自動修改下面的TCP/IP參數:

?

echo 256960 > /proc/sys/net/core/rmem_default
echo 256960 > /proc/sys/net/core/rmem_max
echo 256960 > /proc/sys/net/core/wmem_default
echo 256960 > /proc/sys/net/core/wmem_max
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling

TCP/IP參數都是自解釋的, TCP窗口大小設置為256960, 禁止TCP的時間戳(取消在每個數據包的頭中增加12字節), 支持更大的TCP窗口和TCP有選擇的應答。

上面數值的設定是根據互連網連接和最大帶寬/延遲率來決定。

注: 上面實例中的數值可以實際應用, 但它只包含了一部分參數。

另外一個方法: 使用 /etc/sysctl.conf 在系統啟動時將參數配置成您所設置的值:

?

net.core.rmem_default = 256960
net.core.rmem_max = 256960
net.core.wmem_default = 256960
net.core.wmem_max = 256960
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_sack =1
net.ipv4.tcp_window_scaling = 1

?linux文件描述符1024限制

今天突然報了 open files limit...原來linux默認的文件描述符1024(ulimit -a命令查看)被用光了,為了增大文件描述符號,說要編譯內核才行,今天研究了半天,居然沒成功,后來干脆,用 ulimit -HSa 65536 (1MB64個文件描述符)似乎也生效,這里特別需要注意的地方,別忘了將上面一句加入到/etc/profile里面去,然后用lsof -p JAVA_PID|wc -l 查看jboss似乎已經可以跑到了1758.

附:
文件描述符是一個簡單的整數,用以標明每一個被進程所打開的文件和socket。第一個打開的文件是0,第二個是1,依此類推。Unix 操作系統通常給每個進程能打開的文件數量強加一個限制。更甚的是,unix 通常有一個系統級的限制。

因為squid 的工作方式,文件描述符的限制可能會極大的影響性能。當squid 用完所有的文件描述符后,它不能接收用戶新的連接。也就是說,用完文件描述符導致拒絕服務。直到一部分當前請求完成,相應的文件和socket 被關閉,squid 不能接收新請求。當squid發現文件描述符短缺時,它會發布警告。

在運行./configure 之前,檢查你的系統的文件描述符限制是否合適,能給你避免一些麻煩。大多數情況下,1024 個文件描述符足夠了。非常忙的cache可能需要4096或更多。在配置文件描述符限制時,我推薦設置系統級限制的數量為每個進程限制的2 倍。
2、怎么突破,具體方法?
先查看LINUX默認的文件描述符:
# ulimit -n
1024
我們用命令
ulimit -HSn 65536
來增大文件描述符,然后編譯安裝squid,
把ulimit -HSn 65536放到/etc/rc.d/rc.local讓啟動時加載。
以下為轉載:

Linux

在Linux 上配置文件描述符有點復雜。在編譯squid 之前,你必須編輯系統include 文件中的一個,然后執行一些shell 命令。請首先編輯/usr/include/bits/types.h 文件,改變__FD_SETSIZE 的值:
#define _ _FD_SETSIZE 8192

下一步,使用這個命令增加內核文件描述符的限制:
# echo 8192 >; /proc/sys/fs/file-max

最后,增加進程文件描述符的限制,在你即將編譯squid 的同一個shell 里執行:
sh# ulimit -Hn 8192

該命令必須以root 運行,僅僅運行在bash shell。不必重啟機器。

使用這個技術,你必須在每一次系統啟動后執行上述echo 和ulimit 命令,或者至少在squid 啟動之前。假如你使用某個rc.d 腳本來啟動squid,那是一個放置這些命令的好地方。

基本系統調節

  在對系統的 Apache、PHP 和 MySQL 組件進行調優之前,應該花一些時間確保底層 Linux 組件的運行正常。還應該對正在運行的服務進行縮減,只運行需要的那些服務。這不但是一種良好的安全實踐,而且可以節省內存和 CPU 時間。

  一些快速的內核調優措施

  大多數 Linux 發布版都定義了適當的緩沖區和其他 Transmission Control Protocol(TCP)參數。可以修改這些參數來分配更多的內存,從而改進網絡性能。設置內核參數的方法是通過 proc 接口,也就是通過讀寫 /proc 中的值。幸運的是,sysctl 可以讀取 /etc/sysctl.conf 中的值并根據需要填充 /proc,這樣就能夠更輕松地管理這些參數。清單 2 展示在互聯網服務器上應用于 Internet 服務器的一些比較激進的網絡設置。

清單 2. 包含較為激進的網絡設置的 /etc/sysctl.conf
?????????????? ?
# Use TCP syncookies when needed
net.ipv4.tcp_syncookies = 1
# Enable TCP window scaling
net.ipv4.tcp_window_scaling: = 1
# Increase TCP max buffer size
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
# Increase Linux autotuning TCP buffer limits
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216
# Increase number of ports available
net.ipv4.ip_local_port_range = 1024 65000
?
  將這些設置添加到 /etc/sysctl.conf 的現有內容中。第一個設置啟用 TCP SYN cookie。當從客戶機發來新的 TCP 連接時,數據包設置了 SYN 位,服務器就為這個半開的連接創建一個條目,并用一個 SYN-ACK 數據包進行響應。在正常操作中,遠程客戶機用一個 ACK 數據包進行響應,這會使半開的連接轉換為全開的。有一種稱為 SYN 泛濫(SYN flood) 的網絡攻擊,它使 ACK 數據包無法返回,導致服務器用光內存空間,無法處理到來的連接。SYN cookie 特性可以識別出這種情況,并使用一種優雅的方法保留隊列中的空間(細節參見 參考資料 一節)。大多數系統都默認啟用這個特性,但是確保配置這個特性更可靠。

  啟用TCP窗口伸縮使客戶機能夠以更高的速度下載數據。TCP 允許在未從遠程端收到確認的情況下發送多個數據包,默認設置是最多 64 KB,在與延遲比較大的遠程客戶機進行通信時這個設置可能不夠。窗口伸縮會在頭中啟用更多的位,從而增加窗口大小。

  后面四個配置項增加 TCP 發送和接收緩沖區。這使應用程序可以更快地丟掉它的數據,從而為另一個請求服務。還可以強化遠程客戶機在服務器繁忙時發送數據的能力。

  最后一個配置項增加可用的本地端口數量,這樣就增加了可以同時服務的最大連接數量。

  在下一次引導系統時,或者下一次運行 sysctl -p /etc/sysctl.conf 時,這些設置就會生效。

  配置磁盤來提高性能

  磁盤在 LAMP 架構中扮演著重要的角色。靜態文件、模板和代碼都來自磁盤,組成數據庫的數據表和索引也來自磁盤。對磁盤的許多調優(尤其是對于數據庫)集中于避免磁盤訪問,因為磁盤訪問的延遲相當高。因此,花一些時間對磁盤硬件進行優化是有意義的。

  首先要做的是,確保在文件系統上禁用 atime 日志記錄特性。atime 是最近訪問文件的時間,每當訪問文件時,底層文件系統必須記錄這個時間戳。因為系統管理員很少使用 atime,禁用它可以減少磁盤訪問時間。禁用這個特性的方法是,在 /etc/fstab 的第四列中添加 noatime 選項。清單 3 給出了一個配置示例。

  清單3. 演示如何啟用 noatime 的 fstab 示例
???????????????
/dev/VolGroup00/LogVol00 /????????????????????? ext3??? defaults,noatime??????? 1 1
LABEL=/boot???????????? /boot?????????????????? ext3??? defaults,noatime??????? 1 2
devpts????????????????? /dev/pts??????????????? devpts? gid=5,mode=620? 0 0
tmpfs?????????????????? /dev/shm??????????????? tmpfs?? defaults??????? 0 0
proc??????????????????? /proc?????????????????? proc??? defaults??????? 0 0
sysfs?????????????????? /sys??????????????????? sysfs?? defaults??????? 0 0
LABEL=SWAP-hdb2???????? swap??????????????????? swap??? defaults??????? 0 0
LABEL=SWAP-hda3???????? swap??????????????????? swap??? defaults??????? 0 0
?
  在清單3中只修改了 ext3 文件系統,因為 noatime 只對駐留在磁盤上的文件系統有幫助。為讓這一修改生效,不需要重新引導;只需重新掛裝每個文件系統。例如,為了重新掛裝根文件系統,運行 mount / -o remount。

  有多種磁盤硬件組合,而且 Linux 不一定能夠探測出訪問磁盤的最佳方式。可以使用 hdparm 命令查明和設置用來訪問 IDE 磁盤的方法。hdparm -t /path/to/device 執行速度測試,可以將這個測試結果作為性能基準。為了使結果盡可能準確,在運行這個命令時系統應該是空閑的。清單 4 給出在 hda 上執行速度測試的結果。

  清單4. 在 /dev/hd 上執行的速度測試
???????????????
# hdparm -t /dev/hda

/dev/hda:
?Timing buffered disk reads:? 182 MB in? 3.02 seconds =? 60.31 MB/sec
?
  這一測試說明,在這個磁盤上讀取數據的速度是大約每秒 60 MB。

  在嘗試一些磁盤調優選項之前,必須注意一個問題。錯誤的設置可能損害文件系統。有時候會出現一個警告,指出這個選項與硬件不兼容;但是,有時候沒有警告消息。因此,在將系統投入生產之前,必須對設置進行徹底的測試。在所有服務器上都采用標準的硬件也會有所幫助。

  表 2 列出比較常用的一些選項。

表 2. hdparm 的常用選項
選項       描述
-vi    向磁盤查詢它支持的設置以及它正在使用的設置。
-c?    查詢/啟用 (E)IDE 32 位 I/O 支持。hdparm -c 1 /dev/hda 啟用這個設置。
-m     查詢/設置每中斷多扇區模式。如果設置大于零,設置值就是每個中斷可以傳輸的最大扇區數量。
-d1-X   啟用直接內存訪問(DMA)傳輸并設置 IDE 傳輸模式。hdparm 手冊頁詳細說明了在 -X 后面可以設置的數字。只有     在-vi說明目前并未使用最快速的模式的情況下,才需要進行這個設置。

  不幸的是,對于 Fiber Channel and Small Computer Systems Interface(SCSI)系統,調優依賴于具體的驅動器。

  必須將有幫助的設置添加到啟動腳本中,比如 rc.local。

http://www.linuxeden.com/html/softuse/20070130/25284.html

http://blog.chinaunix.net/u/19673/showart.php?id=302262

http://www.lupaworld.com/viewnews_19052_page_2.html

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

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

相關文章

java中的構造方法與代碼塊

一、構造方法 1.1、java中的構造方法跟普通方法有很大的區別: 構造方法的方法名跟類名相同構造方法沒有返回值類型,連void也沒有,也不能用return返回值每次創建一個對象,都會調用構造方法,如果沒有寫構造方法,系統會默認加上一個空參的構造,如果已經寫了構造方法,…

bash shell是如何識別特殊符號的

一 、 shell命令解析以及識別通配符 Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種接口。它接收用戶輸入的命令并把它送入內核去執行 。 實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令并且把它們送到內核。不僅如此,Shell有自己的編程語言用于對命令的編…

linux 調優系列(續)

linux 的各大發行版,都有些不必要的服務被默認開啟了,針對ubuntu,我們 可以采用選擇性關閉的方法加速起動,提高系統性能。 這里我們安裝一個軟件: sudo apt-get install sysv-rc-conf 然后這樣起動: 在這個…

配置文件bashrc與profile的區別

1、當登入系統時候獲得-個shell進程時,其讀取環境設定檔有三步 首先讀入的是全局環境變量設定檔/ete/profile,然后根據其內容讀取額外的設定的文檔,如/etc/profile. d和/ etc/ inputre 然后根據不同使用者帳號,去其家目錄讀取, bash, pr…

高性能MySQL(4)——查詢性能優化

査詢優化、索引優化、庫表結構優化需要齊頭并進,一個不落。 一、為什么查詢速度為變慢 在嘗試編寫快速的查詢之前,需要清楚一點,真正重要是響應時間。如果把查詢看作是一個任務,那么他由一系列子任務組成,每個子任務都會消耗一定的時間。如果…

GooglePerformanceTools--tcmalloc

TCmalloc全稱是Thread-Caching malloc,作者宣稱tcmalloc相對于glibc2.3 malloc(aka ptmalloc2)有6倍的性能提高,tcmalloc的常用場景是用于加速MySQL,不過據Wikipedia的hacker Domas Mituzas說,tcmalloc不僅僅對MySQL起作用&#x…

linux基本命令以及命令常用選項

linux基本命令以及命令常用選項touch 創建文件,改變恩建時間戳,如果直接跟上一個文件,該文件不存在則創建文件-c文件不存在不創建文件,存在則改變文件的時間戳-a只改變文件的訪問時間-m改變文件的修改時間-t時間格式CCYYMMDDhhmm…

Java獲取上一周、上一個月、上一年的時間

SimpleDateFormat format new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); Calendar c Calendar.getInstance(); 1.過去七天 c.setTime(new Date()); c.add(Calendar.DATE, - 7); Date d c.getTime(); String day format.format(d); System.out.println(“過去七天&#…

遠程網絡安裝RHEL5

一:Linux安裝工作原理 眾所周知,在安裝過程中Linux首先需要一個引導程序來讓安裝光盤啟動,再實行配置與安裝。但目前轉化為遠程網絡安裝那么就需要我們的安裝程序能夠遠程地通過網絡傳送給客戶端。因此在搭建遠程Linux安裝服務器時候首先要值…

sed命令操作

sed 是一種數據流編輯器,它一次處理一行內容,處理時,把當前處理的行存儲在臨時緩沖區(pattern space稱為“模式空間”)中,在內存中處理,完成后把該行發送到屏幕上,清理pattern space中的內容,接著重復剛才的動作,讀入下一行,直到文件處理結束。文件內容并沒有 改變,…

Portainer簡介及部署

一、介紹 Portainer是Docker的圖形化管理工具,提供狀態顯示面板、應用模板快速部署、容器鏡像網絡數據卷的基本操作(包括上傳下載鏡像,創建容器等操作)、事件日志顯示、容器控制臺操作、Swarm集群和服務等集中管理和操作、登錄用…

Nexus搭建Maven私有倉庫

一、使用Docker安裝Nexus 1、查詢當前有哪些Nexus鏡像 docker search nexus2、下載sonatype/nexus3 docker pull docker.io/sonatype/nexus33、運行nexus容器 mkdir -p /usr/local/nexus3/nexus-data #新建掛載目錄 chown -R 200 /usr/local/nexus3/nexus-datadocker run -…

VI資料收集

1.6.1 vi 的工作模式Vi 在初始啟動后首先進入編輯模式,這時用戶可以利用一些預先定義的按鍵來移動光標、刪除文字、復制或粘貼文字等。這些按鍵均是普通的字符,例如 l 是向右移動光標,相當于向右箭頭鍵,k 是向下移動光標&#xff…

linux終端

終端就是處理計算機主機輸入輸出的一套設備,它用來顯示主機運算的輸出,并且接受主機要求的輸入,典型的終端包括顯示器鍵盤套件,打印機打字機套件等 linux終端類型終端名稱標識含義串行端口終端Serial Port Terminal/dev/ttySx 串行…

日常問題——VMware下的CentOS7 Ping不通百度

問題描述: 在VMware下新創建的CentOS ping 不通百度 解決方案: 1、點擊VMware的編輯按鈕下的虛擬網絡編輯器 2、更改設置后,選擇NAT類型,點擊NAT設置 3、記錄下,子網ip,掩碼,網管IP信息 4、…

linux查找文件find

查找命令文件whatis 從path還從man中查找which 從path環境變量中查找文件查找locate /var/lib/mlocate/mlocate.db 通過update更新數據庫 find 默認動作是 -print -ls -delete -ok -exec 命令 {} \; -name根據文件名查找-iname忽略大小寫-size根據文件及目錄大小查找…

linux下用ntp對時

更新系統時間的命令用&#xff1a;ntpdate <時間服務器>教育網下常用的時間服務器有s1a.time.edu.cn&#xff0c;或者210.72.145.44ntpdate 210.72.145.44更多教育下的時間服務器可在這里找到&#xff1a; http://www.time.edu.cn/mem.htm。如果想讓系統退出時的把時間寫…

CentOS7.6下安裝Ambari

一、準備工作 1.1、準備三臺CentOS 1.2、配置靜態IP、DNS vi /etc/sysconfig/network-scripts/ficfg-ens33IPADDR為 配置的ip NETMASK 子網掩碼 GATEWAY 網關 配置保存后重啟虛擬網絡 service network restart1.3、配置Hostname vi /etc/hostname#將第一行替換成新名字 m…

多主機推送公鑰、修改配置、修改密碼腳本

推送公鑰&#xff1a; !#/bin/bash if [! -f ~/.ssh/id_rsa ] ;thenssh-keygen -P "" -f ~/.ssh/id_rsa fifor i in seq 100 do {ip192.168.1.$iping -c1 $ip &>/dev/nullif [ $? -eq 0];thenecho $ip |tee addreee/usr/bin/expect<<-EOFset time 10…

shell生活序

從編程語言的觀點看linux shell-變量的作用域&#xff0c;環境變量&#xff0c;位置變量我們仍以BASH 為討論的shell 語言每一種編程語言中&#xff0c;我們都會碰到變量的作用域的問題。&#xff08;比如在函數中定義的變量在函數外不能使用的)BASH 中也有類似的問題&#xff…