네트워크 최적화 방법(솔라리스 8을 중심으로)
한빛미디어
|
2002-11-13
|
by HANBIT
21
12,653
「한빛 네트워크 기사 공모전」 입선작: 박원형
인터넷이 일반화된 지금 네트워크를 빼고 컴퓨팅을 말하는 것은 불가능하다. 따라서 시스템 관리자가 네트워크를 최적화하는 노하우를 습득하는 것은 실로 중요한 업무 중 하나라 할 수 있다. 본 기사에는 네트워크 성능을 저하시키는 요인을 제거하는 방법과 네트워크 상황을 확인할 수 있는 도구 등을 알아보면서 네트워크를 최적화하는 방법에 대해 알아보기로 하겠다.
네트워크 기술의 진화
컴퓨터 시스템의 진화과정을 보면 특히 CPU의 성능 향상에는 눈이 휘둥그래질 정도이다. ‘무어의 법칙(인텔의 창립 멤버인 코든 무어박사가 주장한 것으로 실리콘 칩의 집적수와 성능은 18개월에 2배로 향상된다는 법칙)’에 따라 CPU 기술은 급격한 진화를 계속해 그 처리 성능이 눈에 띄게 향상되었다는 것은 모두 잘 알 것이다. 그러나 이러한 CPU의 급속한 성능향상에 비해 네트워크 성능은 변화속도가 느린 편이다. 80년 표준안이 만들어진 이더넷은 10Mbps에서 진화가 잠시 정지되었다가 100Mbps 이더넷이 기업에 보편화된 것은 불과 최근의 일이다.
그렇지만 최근 데이터 전송량이 급격하게 늘어나고 기가비트 이더넷 등의 고속 통신 프로토콜을 지원하는 네트워크 어댑터도 활발하게 보급되고 있어 기업 시스템의 백본 네트워크 처리성능은 급속도로 향상되고 있다. 또한 개인 사용자용 인터넷 접속 서비스에 있어서도 음악이나 동영상 데이터의 송수신 서비스가 일반화되는 등 네트워크 성능에 대한 요구수준이 높아져 케이블 모뎀이나 기존의 전화회선을 사용한 ADSL(Asymmetric Digital Subscriber Line) 서비스 등 광대역 인터넷 접속 서비스 이용도 크게 늘어나고 있다. 네트워크 성능이 비즈니스의 성패를 좌우하는 닷컴 컴퓨팅을 추진하는 기업에 있어서는 인터넷만이 아니라 기업 정보 시스템의 네트워크 성능을 향상시키는 노하우 또한 매우 중요해졌다.
이제부터는 성능저하 요인 제거 우선 네트워크 애플리케이션을 가동할 때 범하기 쉬운 오류에 대해 간단히 설명하겠다. 기업 네트워크에서 범하기 쉬운 가장 기초적인 실수 중 하나는 네트워크에 빈번하게 접속하는 애플리케이션을 통제하지 않는 것이다. TCP/IP 프로토콜은 패킷 전송의 효율이 높다. 그렇지만 접속이 일어날 때에는 많은 패킷을 주고받게 되므로 쓸 데 없이 접속을 끊었다 재개했다를 반복하는 애플리케이션이 실행되고 있을 경우, 네트워크 전송의 효율은 큰 폭으로 저하된다. 하지만 많은 애플리케이션은 이와 같은 동작을 반복하도록 설정되어 있기 때문에(FTP에서조차 예외는 없다) 시스템 관리자는 전혀 필요 없는 패킷이 네트워크에 흐르지 않도록 제어할 필요가 있다.
그러나 대부분의 관리자들이(특히 솔라리스와 친숙하지 않은 관리자들) 공통적으로 안고 있는 문제는 어떤 서비스가 진짜 필요하고 그렇지 않은지를 알기 힘들다는 것이다. 우선 불필요한 서비스를 알아내기 위해서는 종이에 시스템을 사용하는 주목적을 적고, 이 시스템에 설치된 프로그램들을 적는다. 그리고 시스템에서 열려 있는 포트(/etc/services)와 실행되고 있는 서비스 프로세스를 프린트 해서 이들과 관련된 프로그램들을 정리하면 불필요한 서비스를 쉽게 찾아낼 수 있다. 다만 Solaris를 내부적으로 사용할 경우에는 ‘/etc/services’에 등록되어 있는 서비스가 실행되고 있는지 확인하는 것이 좋다. 이를 위해서는 해당 포트로 데이터가 흐르는지 여부를 확인하면 되는데, 데이터의 흐름은 서비스에 따라 유동적이므로 가급적 장기간(일주일 이상)을 두고 검사하는 것이 좋다. 특정 포트에 데이터가 흐르는지는 ‘snoop’ 명령어를 이용해 확인한다.
그러면 이번에는 네트워크의 폭주상태를 해소하는 방법에 대해 알아보자. 이더넷은 네트워크가 공유되어 있지 않은 상태에서는 10Mbps의 속도로 데이터를 처리할 수 있다. 실제로 FTP를 사용해 데이터를 전송해보면 약간의 오버헤드는 발생하지만 거의 이 수치 그대로 처리할 수 있다. 그러나 실제 네트워크는 대부분 공유환경에서 사용되므로 패킷이 충돌하는 현상이 발생하게 된다. 또한 네트워크는 약 35% 정도의 사용률에서 포화상태에 달하게 되는데, 이 상태를 넘어서면 업무에 지장을 주게 되므로 시스템 관리자는 네트워크 사용률에 항상 주의를 기울여야 한다. 실제로 네트워크 상에 오류가 발생하면 시스템은 네트워크로 계속 패킷을 보내려 할 것이고, 이에 따라 시스템의 부하가 증가하게 된다.
일반적으로 네트워크 상태는 ‘netstat’ 명령어를 이용해 확인할 수 있는데, 예를 들어 ‘netstat –I’라고 입력하면 <리스트 1>과 같은 출력결과가 나타난다. 이곳을 보면 4,723,980 패킷에 대한 콜리젼은 83,028이다(Collis/Opkts의 비율은 1.8%이다). 일반적으로 Collis/Opkts의 비율이 5%를 넘어야 폭주상태 라고 말할 수 있으므로 이 네트워크 환경은 아직 폭주상태는 아니라고 볼 수 있다. 하지만 2%를 넘어서면 업무시스템의 성능에까지 영향을 미치므로 Collis/Opkts가 2%를 넘지 않도록 주의해야 한다. 여기에서 ‘lerrs’나 ‘Oerrs’는 각각 입력 에러수와 출력 에러수를 나타내고 있는데, 이들의 수치가 높게 나타나는 것은 네트워크 상의 하드웨어(라우터나 스위치 등)에 문제가 있는 경우이므로 빨리 그 원인을 알아보아야 한다.
GUI 기반의 툴을 이용해 네트워크 상태를 시각적으로 확인할 수 있는 방법도 있다. 솔라리스의 CDE 환경에 서는 시스템 성능상태를 실시간으로 표시해 주는 ‘성능 측정기’라는 도구가 있는데, 이 도구는 임계치를 설정할 수 있어 네트워크에 관련된 문제를 쉽고 간단하게 파악 할 수 있다. 네트워크의 포화상태를 해소하기 위해서는 일반적으로 네트워크를 여러 서브 네트워크로 분할하는 방법이 이용된다. 또한 가장 폭주하고 있는 서브넷에 보다 고속의 네트워크 인터페이스를 채용하는 방법을 생각해 볼 수도 있다.
패킷 트래픽
패킷의 크기는 패킷을 만들어내는 애플리케이션에 따라 그 크기가 다르기 때문에 중요한 애플리케이션이 네트워크 상에서 어떤 패킷을 주고받는지에 대한 정보는 네트워크 성능을 최적화하는 데 매우 중요한 파라미터가 된다. 몇 가지 ERP 시스템에서는 100Byte 정도의 패킷이 흐르는 환경에서 패스트 이더넷을 사용할 경우 애플리케이션 성능은 FDDI(Fiber Distributed Data Interface) 네트워크를 사용한 경우보다 훨씬 양호하다(하지만 패킷의 크기가 커지면 그 성능차는 줄어든다). DB 시스템과의 접속성능에 문제가 발생했을 경우 FDDI 네트워크를 패스트 이더넷으로 치환하면 해결 될 수도 있는데, 소규모 패킷 트래픽에 대해서는 FDDI보다도 패스트 이더넷이 애플리케이션의 실행 성능면에서 유리하다고 할 수 있다. 따라서 대형의 패킷을 전송해야 하는 멀티미디어 전송환경에서는 FDDI/ATM 네트워크를 사용하곤 한다. 이밖에 정말 중요하지만 간과하기 쉬운 것으로 네트워크 데이터 송수신에 할당된 CPU 리소스를 들 수 있는데, 일반적인 네트워크 처리에 있어 필요한 CPU 리소스는 ‘1Mbps(Full Duplex)≒1MHz’이다. 예를 들면 Quad 패스트 이더넷 카드를 사용해 400Mbps의 전송속도를 얻기 위해서는 400~600MHz의 CPU 리소스가 필요하다고 생각하면 될 것이다. 네트워크 카드는 CPU에 많은 인터럽트를 유도하는 장치 중 하나이므로 고속의 네트워크 카드를 설치하는 경우에는 반드시 충분한 CPU 성능을 확보해야 제대로 된 네트워크 성능을 만끽할 수 있다.
TAG :