1. ndd 커맨드를 이용한 방법
ndd -set /dev/hme adv_autoneg_cap 0 (오토센싱 기능 off)
ndd -set
/dev/hme adv_100fdx_cap 1 (100Mbps 풀 듀플렉스 기능 on)
ndd -set /dev/hme
adv_100hdx_cap 0
ndd -set /dev/hme adv_100T4_cap 0
/etc/init.d/inetsvc에 다음과 같은 문장을 추가한다.
/usr/sbin/ndd -set /dev/hme adv_100fdx_cap 1
2. /etc/system에 설정하는 방법
set hme:hme_adv_autoneg_cap=0
set hme:hme_adv_100hdx_cap=0
set
hme:hme_adv_100fdx_cap=1
- tcp_time_wait_interval 조정
/usr/sbin/ndd -set /dev/tcp tcp_time_wait_interval 60000
or
/etc/system 파일에
set ip:ip_forwarding=0
+ /etc/system 설정 잘못으로 부팅이 안되는 경우
boot prom에서
boot -i로 부팅한 다음에
/etc/system을 참조할 때 /dev/null을 참조한다고 해서 부팅후에 다시 수정할 것
- tcp 설정 정보 조회
ndd -get /dev/tcp ?
- tcp tuning parameter 목록중에 자주 이용하는 것 정리.
+ tcp_time_wait_interval
Solaris 2.6 이전까지는 tcp_close_wait_interval 이다.
메모리에서 TCP 연결이 끊어져도 tcp가 쓰던 소켓 정보를 일정 기간 대기 상태로 가지고 있고, 이를 가지고 있는 시간인데 기본값은 240,000ms(4분)이지만, 이는 tcp 소켓을 많이 요구하는 서버, 즉 웹 서버에서는 너무 길게 waiting 하는 것이 메모리 낭비이므로 60,000ms(1분) 정도로 줄이는 것이 좋다. 그러나 이를 너무 줄일 경우, 커넥션 품질 자체가 불안할 수 있으므로 더 이상 줄이지 않는 것이 바람직하다.
+ tcp_conn_req_max_q0
TCP/IP 프로토콜 통신에서 half-open connection 상태, 즉 마지막 ACK를 받지 못한 상태의 커넥션을 몇 개까지 가지고 있을지에 대한 파라미터 값이다. 기본값은 1024인데 이 파라미터는 tcp_conn_req_max_q와 형태가 비슷하다고 무조건 늘리는 경우가 있는데 불필요하며, 이 파라미터는 completed connection 마저도 listen queue에 들어가지 못하는 경우를 제외하고는 변경할 필요가 없다.
+ tcp_conn_req_max_q
웹 서버 튜닝에서 가장 많이 사용하는 파라미터이다.
기본값은 128인데, 1024 이하 정도로 늘려주는 것이
바람직하다. 이는 completed connection이 실제 처리되기까지 받아주는 큐 크기로 너무 부족하면 상당히 바쁜 웹
서버의 경우, 사용자의 요청을 놓치는 경우가 발생할 수 있기 때문이다.
+ tcp_slow_start_initial
TCP 프로토콜 통신에서 처음에 테스트용으로 보내는 초기화 패킷 수를 말한다. Sun의 기본값은 1인데 다른 벤더들(특히
MS)이 2개를 사용하므로 변경해주는 것이 바람직하다.
솔라리스 8의 경우 가끔 4인 사례를 발견할 수 있었다.
- 네트워크 모니터링
netstat -s -Ptcp 커맨드를 이용하면 모든 프로토콜의 졍보를 출력하는데 -Ptcp라는 옵션을 추가하면 우리가 TCP 프로토콜의 파라미터를 변경하기 전 TCP와 관련한 정보만 출력해 준다.
trax´s note: trax가 사용하는 Solaris 2.4, 2.6 환경에서는 netstat -s -P tcp라고 사용한다. 아마 레퍼런스가 틀린 것이 아닌가 싶다.
ais011# netstat -s -P tcp
TCP tcpRtoAlgorithm = 4 tcpRtoMin = 200
tcpRtoMax =240000
tcpMaxConn = -1
tcpActiveOpens = 10737 tcpPassiveOpens = 53520
tcpAttemptFails
= 491 tcpEstabResets = 53
tcpCurrEstab = 28 tcpOutSegs =2640894
tcpOutDataSegs
=2411701 tcpOutDataBytes =2076891073
tcpRetransSegs = 18540
tcpRetransBytes =13528493
tcpOutAck =229065 tcpOutAckDelayed = 30144
tcpOutUrg = 0 tcpOutWinUpdate = 81
tcpOutWinProbe = 212
tcpOutControl =157770
tcpOutRsts = 26705 tcpOutFastRetrans = 6732
tcpInSegs
=2187955
tcpInAckSegs =1496281 tcpInAckBytes =2076911268
tcpInDupAck
= 88774 tcpInAckUnsent = 0
tcpInInorderSegs =770953
tcpInInorderBytes =343372713
tcpInUnorderSegs = 1019
tcpInUnorderBytes =1046324
tcpInDupSegs = 2854 tcpInDupBytes =372742
tcpInPartDupSegs = 245 tcpInPartDupBytes =142283
tcpInPastWinSegs
= 0 tcpInPastWinBytes = 0
tcpInWinProbe = 0 tcpInWinUpdate = 198
tcpInClosed
= 35 tcpRttNoUpdate = 13508
tcpRttUpdate =1459914 tcpTimRetrans =
12237
tcpTimRetransDrop = 366 tcpTimKeepalive = 358
tcpTimKeepaliveProbe=
12 tcpTimKeepaliveDrop = 0
tcpListenDrop = 0 tcpListenDropQ0 = 0
tcpHalfOpenDrop
= 0
tcpListenDropQ0는 accept() system call시 drop된 것의 카운트이고
tcpListenDrop(Q)은 three-way handshake라고도 불리는 처음 두번째 ACK를 받기 전
incompleted connection이 큐에 들어가지 못한 카운트다.
'OS > SOLARIS' 카테고리의 다른 글
[Solaris] 물리적 CPU 수, core 수, Virtual Processor 수, Thread 수 (0) | 2018.07.11 |
---|---|
solaris network 설정 (0) | 2010.03.09 |
solaris cd-rom mount 하기 (0) | 2010.03.05 |
solaris root 패스워드 복구 (0) | 2009.10.28 |
solaris10 vsftp 설치 및 포트변경 (0) | 2009.08.03 |