출처 : http://www.javaservice.net/~java/bbs/read.cgi?m=resource&b=was&c=r_p&n=1095038762&k=nodelayack&d=tb#1095038762
실제 아래와 성능저하가 발생하여 조치후 엄청난 성능개선을 가져왔습니다.
초반에 WAS문제로 파악되어 각종 patch 및 소스튜닝?를 다해봤으나, network 문제일지도 모른다는 생각을 하기까지는 많은 시간이 필요했네요.
================================================================================
AIX 서버에서 Oreilly Multipart Request 를 사용하여 FileUpload 시에 Upload 속도가
FTP 속도보다 현저히 낮게 나옵니다. 이와 같은 경우 다음과 같이 Network 설정값을
조정하시면 문제가 해결 됩니다. 테스트 결과 Windows와 Linux 는 이상없더군요.
no -a | grep tcp
출력된 결과중 tcp_nodelayack 값이 0 으로 되어 있으면 아래 명령어를 사용하여 1로 수정.
no -p -o tcp_nodelayack=1
[아래 내용을 참고하세요]
--------------------------------------------------------------------------------------------------------------
The delayed ACK option is provided as a way to disable TCP stack from delaying sending the ACK packets.
This behaviour is the default behaviour on all TCP stacks.
A good description on delayed ACKs can be found in "TCP/IP Illustrated Vol 1 and 2" by Richard Stevens
.
By disabling this option, TCP stack on the receiver side will not hold off the ACK packets.
It will immediately acknowledge the data packets.
If the ACK is delayed it can be anywhere between 0 and 200ms time gap, and this will impact performance
if there are lot of delayed ACKs going on.
.
The option should be disabled depending on the kind of applications on the system and the kind of traffic being exchanged.
If the netsat -s shows a lot of delayed ACKs, then it is a good idea to set tcp_nodelayack to 1.
There are several customers who use this option when they see performance problems.
.
I don't have any numbers on how much performance difference was seen in other customers' cases.
--------------------------------------------------------------------------------------------------------------
NODELAYACK
NODELAYACK is used to allow non-data transmissions from the host to flow without data. If NODELAYACK is used, the MVS TCP/IP immediately sends an ACK to the remote server TCP/IP. The ACK is not appended to the data being sent from IMS Connect.
If the client code sends one SEND followed by a READ to the host with a NODELAYACK setting, an ACK is sent separately.
If the client code sends two or more SENDs followed by a READ to the host, the host TCP/IP will send an ACK immediately to the data received. This will allow the next SEND of data from the client to flow.
NODELAYACK is recommended if your client application sends more than one SEND followed by a READ.
NODELAYACK can be set on the TCP/IP "Port Statement" or on the "Gateway Statement."
Man Page)
tcp_nodelayack
Purpose:
Turning this parameter on causes TCP to send immediate acknowledgement
(Ack) packets to the sender. When tcp_nodelayack is off, TCP delays sending
Ack packets by up to 200ms. This allows the Ack to be piggy-backed onto a
response and minimizes system overhead.
Values:
o Default: 0(off)
o Range: 0 or 1
o Type: Dynamic
Diagnosis:
N/A
Tuning
This option can be used to overcome bugs in other implementations of the
TCP nagle algorithm. Setting this option to 1 will cause slightly more
system overhead, but can result in much higher performance for network
transfers if the sender is waiting on the receiver's acknowledement.
'::: OS ::: > AIX' 카테고리의 다른 글
AIX 과정 로드맵 (0) | 2010.09.17 |
---|---|
유닉스 팁: 열 가지 더 좋은 유닉스 습관 (0) | 2010.09.15 |
보안 점검 시 유용한 명령어 모음 (0) | 2010.09.07 |
errpt 백업 및 삭제 (0) | 2010.09.07 |
접속계정 강제 로그아웃 (0) | 2010.08.19 |