調整 Linux 系統

本主題描述如何調整 Linux 操作系統以提高 WebSphere Application Server 的性能。

關於本任務

遇到性能問題時,請檢查操作系統設置以確定這些設置是否適合於您的應用程序。由於 Linux 操作系統不是 WebSphere Application Server 產品,因此請注意,它可能會改變,並且結果可能會有所變化。

過程

根據調整需求,配置下列設置和變量:
  • timeout_timewait 參數
    • 描述:確定 TCP/IP 在釋放已關閉的連接並再次使用其資源前必須經過的時間。關閉與釋放之間的這段時間稱爲 TIME_WAIT 狀態或者兩倍最大段生存期(2MSL)狀態。此時間期間,重新打開到客戶機和服務器的連接的成本少於建立新連接。通過減少此條目的值,TCP/IP 可以更快地釋放關閉的連接,併爲新連接提供更多資源。如果正在運行的應用程序需要快速釋放連接、創建新的連接,並且因爲許多連接處於 TIME_WAIT 狀態而導致低吞吐量,那麼調整此參數。
    • 如何查看或設置:
      發出以下命令,將 timeout_timewait 參數設置爲 30 秒:
      echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
  • SUSE Linux Enterprise Server 8(SLES 8)SP2A - sched_yield_scale 調整
    • 描述:Linux 調度程序對上下文切換過度非常敏感,因此,已將修訂包集成到 SLES 內核分發中,以便在線程發生處理時引入延遲。在 SLES 8 SP3 中將自動啓用此修訂包,但在 SLES 8 SP2A 或更高版本中,必須明確地啓用它。
    • 如何查看或設置:
      1. 將 SLES 8 service pack 升級到 SP2A。
      2. 發出 sysctl -w sched_yield_scale=1 命令。
    • 缺省值:0
    • 建議值:1
  • RedHat Advanced Server 2.1 內核更新
    • 描述:RedHat Advanced Server 2.1 的內核更新已實現了影響 WebSphere Application Server 性能(尤其是內存到內存 HTTP 會話複製性能)的更改。
    • 如何查看或設置:
      1. 發出 uname -a 命令
      2. 如果正在運行 2.4.9-e.23 之前的任何內核,請至少升級到 RedHat Advanced Server 2.1 內核,最好升級到受支持的最新內核。
    • 缺省值:2.4.9-e.3
    • 建議值:2.4.9-e.23
  • Linux 文件描述符(ulimit)
    • 描述:指定支持打開的文件數。通常,缺省設置適合於大多數應用程序。如果將此參數值設置得太小,那麼可能會顯示文件打開錯誤、內存分配故障或連接建立錯誤。
    • 如何查看或設置:請參閱有關 ulimit 命令的 UNIX 參考頁面以瞭解不同 shell 的語法。對於 KornShell shell(ksh)程序,要將 ulimit 命令設置爲 8000,請發出 ulimit -n 8000 命令。使用 ulimit -a 命令來顯示所有系統資源限制的當前值。
    • 缺省值:對於 SUSE Linux Enterprise Server 9(SLES 9),缺省值是 1024
    • 建議值:8000
  • 連接儲備
    • 描述:當由於入局連接請求比率過高而導致連接故障時,請更改下列參數:
      echo 3000 > /proc/sys/net/core/netdev_max_backlog
      echo 3000 > /proc/sys/net/core/somaxconn
  • TCP_KEEPALIVE_INTERVAL
    • 描述:確定兩次 isAlive 時間間隔探測之間的等待時間。
    • 如何查看或設置:發出以下命令來設置此值:
      echo 15 > /proc/sys/net/ipv4/tcp_keepalive_intvl
    • 缺省值:75
    • 建議值:15
  • TCP_KEEPALIVE_PROBES
    • 描述:確定超時前的探測次數。
    • 如何查看或設置:發出以下命令來設置此值:
      echo 5  > /proc/sys/net/ipv4/tcp_keepalive_probes
    • 缺省值:9
    • 建議值:5
To support over 500k users, you *need*

- A 64 bits hardware/kernel (AMD64, Opterons)
- At least 8GB of ram
- A recent linux kernel (2.6.x)
About tuning, I prefer to not fully disclose them because servers are targets of many attacks, so it's better not help hackers.
The most touchy thing is the IP route cache : You have to tune it or else the machine drops many connections

(hint : rhash_entries=... in the boot append string)
hints :
echo 1 > /proc/sys/net/ipv4/route/gc_interval
echo 150 >/proc/sys/net/ipv4/route/gc_timeout
echo 2 >/proc/sys/net/ipv4/route/gc_elasticity

- Use of hugeTLB pages
hint :
echo xxx >/proc/sys/vm/nr_hugepages

Tune tcp :
echo "4096 49152 131072" >/proc/sys/net/ipv4/tcp_wmem
echo xxxx >/proc/sys/net/ipv4/tcp_max_syn_backlog
echo xxxx >/proc/sys/net/core/somaxconn
echo 1200000 > /proc/sys/net/ipv4/tcp_max_tw_buckets
echo 7 >/proc/sys/net/ipv4/tcp_retries2
echo "600000 650000 700000" >/proc/sys/net/ipv4/tcp_mem
echo 0 >/proc/sys/net/ipv4/tcp_timestamps
echo 0 >/proc/sys/net/ipv4/tcp_window_scaling
echo 0 >/proc/sys/net/ipv4/tcp_sack
echo 330000 >/proc/sys/net/ipv4/tcp_max_orphans
echo "10000 62000" >/proc/sys/net/ipv4/ip_local_port_range
others :
echo 1300000 >/proc/sys/fs/file-max
  • 爲 Java 虛擬機(JVM)堆分配大頁(針對 SLES 9 測試)
    某些應用程序要求使用非常大的堆以提高性能。通過使用 CPU 和操作系統提供的“大頁”支持,可以降低 CPU 管理大型堆的開銷。以下示例假定大頁大小爲 4MB,並且期望的堆大小爲 2300MB。
    1. 通過 sysctl.conf 文件(此文件通常是 /etc/sysctl.conf)設置下列三個設置。
      注: 您必須具有 root 用戶訪問權才能修改此文件。並且,在嘗試修改此文件前,請驗證此文件是否是隻讀的。
      1. 通過發出以下命令,設置大頁數(2300MB = 575 * 4MB):
        vm.nr_hugepages = 575
      2. 通過發出以下命令,將最大共享段大小設置爲 2300MB 加上一個較小的增量(大約 95MB)(2511724800 = 2300MB * 1048576 字節/MB + 100000000 字節):
        kernel.shmmax = 2511724800
      3. 通過發出以下命令,設置要共享的總內存量:
        kernel.shmall = 2511724800
    2. 指定 -Xlp JVM 選項,以使 JVM 堆能夠利用大頁。
    3. 將 Xmx JVM 選項設置爲 2300MB
    4. 將程序文本重新定位到較低的虛擬內存地址(0x10000000)中,從而爲較大的堆提供更多地址空間。在 SUSE Linux Enterprise Server 9 上,請運行以下命令來重新定位 JVM 調用腳本或 .profile 文件中的文本:
      echo "0x10000000" > /proc/self/mapped_base

    結果

    此調整過程提高了 Linux 操作系統上 WebSphere Application Server 的性能。
  • 發表評論
    所有評論
    還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
    相關文章