Sun x4500作爲文件服務器的調優

Sun x4500在互聯網行業的典型應用就是作爲文件服務器。通常數據是通過網絡以http的方式
提供給客戶端的機器。根據經驗,Sun x4500上可以做一些優化:
系統參數
/etc/system:
set noexec_user_stack = 1 * for security, prevent execution on stack
set zfs:zfs_prefetch_disable = 1 * If the data is seldom re-used, turn off prefetch
set zfs:zfs_arc_max = 0x200000000 * 8GB cache size, leave some RAM for applications
set zfs:zfs_vdev_max_pending = 10 * for better I/O response time
set ip:ip_soft_rings_cnt = 3 * tcp/ip tuning
set ip:ip_squeue_soft_rings = 1 * tcp/ip tuning
set rlim_fd_cur = 65536 * allow applications to open more files simultaneously
網絡設置
● 創建網絡聚合
Sun x4500提供了4個千兆網口。作爲一個高負荷的文件服務器,只使用一個千兆網口會造成性能瓶頸。可以創建網絡聚合(link aggregation)來同時使用多個網口。Solaris上管理 link aggregation的命令是dladm。
以下是創建網絡聚合的例子:創建3個網口的聚合。剩下一個網口可以做管理和監控用。但應注意用於管理的網口的IP地址最好與聚合網口的IP地址在不同的網段上,否則業務網絡的出包可能會從管理用的網口出去,從而帶寬受限制。
注意網絡聚合還需要交換機的支持和配置(支持LACP協議)。
# dladm show-link
# ifconfig e1000g1 unplumb
# ifconfig e1000g2 unplumb
# ifconfig e1000g3 unplumb
# dladm create-aggr -d e1000g1 -d e1000g2 -d e1000g3 1
# ifconfig aggr1 plumb <new IP> up
# dladm show-aggr
(optional)If you want the config persistent after reboot, please:
# vi /etc/hostname.aggr1
<put the IP address in this file>
# reboot -- -r
● 主機上的網絡流量監控網絡流量的監控可以用一個開源的工具nicstat來查看。
[bash]# nicstat 5
Time Int rKB/s wKB/s rPk/s wPk/s rAvs wAvs %Util Sat
17:05:17 lo0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
17:05:17 e1000g0 0.61 4.07 4.95 6.63 126.2 628.0 0.04 0.00
17:05:17 e1000g1 225.7 176.2 905.0 922.5 255.4 195.6 0.33 0.00
nicstat的下載地址:http://blogs.sun.com/timc/entry/ ... _network_monitoring
● TCP/IP的調整
創建一個腳本,根據需要調整相應的ndd參數
# cat /etc/rc2.d/S99ndd.sh
ndd -set /dev/tcp tcp_conn_req_max_q 8192 //應對大併發量的連接請求
ndd -set /dev/tcp tcp_conn_req_max_q0 8192 //應對大併發量的連接請求
ndd -set /dev/tcp tcp_recv_hiwat 131072 //增大tcp/ip 的receive buffer
ndd -set /dev/tcp tcp_xmit_hiwat 131072 //增大tcp/ip的send buffer
● 網絡中斷的調整
缺省情況下,Sun x4500四個網口的中斷都會集中在一個CPU上。當網絡流量很大時會成爲瓶頸。解決辦法是:
#eeprom e1000g_intpt_bind_cpus=0,1,3 //讓網絡中斷分散到第0,1,3號CPU
#reboot
● disable ipfilter
ipfilter會影響性能,如果不用的話可以disable掉:
#scvadm disable svc:/network/ipfilter:default
Sun x4500上Web server的設置
Web server的種類很多,常用的有apache,Sun Java Enterprise System webserver, lighttpd, nginx等。對於Solaris上運行的開源Web server,建議下載使用SUN優化過的版本,裏面包含了apache, lighttpd和nginx。下載地址:http://cooltools.sunsource.net/coolstack/
無論採用哪種web server都要注意以下幾點:
● 有足夠的工作線程/進程來處理客戶端的連接。
● 網絡I/O複用模式
Solaris上沒有epoll,可以使用/dev/poll或event port。某些Web server對event port的支持不是很好,建議使用/dev/poll。
● 有足夠的工作線程/進程來驅動I/O。
新一代的webserver都支持網絡I/O複用,可以用較少的進程處理大量的網絡連接。但是由於這些webserver並不是專爲文件服務所設計的,並且沒有采用異步I/O。較少的進程往往不能產生足夠的I/O量,造成大量客戶端長時間等待。所以需要加大webserver的工作進程數量。對於lighttpd可以增加到32個進程,對於nginx甚至可以增加到上百個進程。
● 根據需要調整web server的I/O size
可以使用truss命令來觀察web server每次I/O的大小,如果可能的話通過修改配置或源碼的方式調整I/O size,以提高I/O性能。
參考和推薦資源
● ZFS best practice guide
http://www.solarisinternals.com/ ... est_Practices_Guide
● ZFS evil tuning guide
http://www.solarisinternals.com/ ... S_Evil_Tuning_Guide

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章