KR20100109368A - 서버 로드 용량 결정 시스템 - Google Patents

서버 로드 용량 결정 시스템 Download PDF

Info

Publication number
KR20100109368A
KR20100109368A KR1020100017529A KR20100017529A KR20100109368A KR 20100109368 A KR20100109368 A KR 20100109368A KR 1020100017529 A KR1020100017529 A KR 1020100017529A KR 20100017529 A KR20100017529 A KR 20100017529A KR 20100109368 A KR20100109368 A KR 20100109368A
Authority
KR
South Korea
Prior art keywords
server
numerical value
computer system
load
value
Prior art date
Application number
KR1020100017529A
Other languages
English (en)
Inventor
그라함 로버트 버크넬
Original Assignee
인터내셔널 비지네스 머신즈 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 인터내셔널 비지네스 머신즈 코포레이션 filed Critical 인터내셔널 비지네스 머신즈 코포레이션
Publication of KR20100109368A publication Critical patent/KR20100109368A/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/50Testing arrangements
    • H04L43/55Testing of service level quality, e.g. simulating service usage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/20Arrangements for monitoring or testing data switching networks the monitoring system or the monitored elements being virtualised, abstracted or software-defined entities, e.g. SDN or NFV

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Environmental & Geological Engineering (AREA)
  • Quality & Reliability (AREA)
  • Debugging And Monitoring (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Abstract

본 발명은, 네트워크에 연결된 시험 컴퓨터 시스템에 한 명 또는 그 이상의 가상 사용자들을 시뮬레이트 하는 것을 포함해서 서버 로드에 따라서 사용자들의 수를 결정하기 위한 방법, 컴퓨터 프로그램 제품, 및 시스템이다. 네트워크에 연결된 서버 컴퓨터 시스템 상에서 실행되는 서버 어플리케이션에, 한 명 또는 그 이상의 가상 사용자들 각각으로부터 하나 또는 그 이상의 클라이언트 요청들이 보내어진다. 서버 컴퓨터 시스템의 로드를 나타내는 수치가 측정된다. 그 수치는 미리 결정된 값에 비교되고; 그 수치는 미리 결정된 값의 미리 결정된 범위 내에 들어 올때까지 그 미리 결정된 값과 그 수치의 차에 근거해서 한 명 또는 그 이상의 사용자들의 수가 변경된다.

Description

서버 로드 용량 결정 시스템{SYSTEM FOR DETERMINING SERVER LOAD CAPACITY}
본 명세서는 컴퓨터 시험 시스템들 및, 구체적으로, 서버 로드를 결정하기 위한 컴퓨터 시험 시스템들에 관한 것이다.
서버 컴퓨터들은 보통 동시에 많은 사용자들에게 서비스를 제공한다. 때때로 많은 사용자들이 서버에 동시에 접속하려고 할 때 서버에는 과부하가 생길 수 있다. 이러한 경우 서버는 서비스 지연을 일으키거나, 또는 고장이 날 수 있다. 이러한 문제들을 피할 수 있는 한가지 방법은 서버의 제한들을 이해하고 서버 또는 서버 시스템이 예상된 로드를 처리할 수 있게 디자인하는 것이다.
서버를 시험하는 방법은, 가상 사용자들에 의해서 만들어진 시험 트래픽(test traffic) 및 시험 클라이언트 요청들을(test client requests) 서버에 보내는 것을 포함할 수 있다. 이들 방법들 중 일부는 사용자 트래픽 및 클라이언트 요청들을 시뮬레이션하여 시험중인 서버의 반응을 측정함으로써, 네트워크 트래픽(network traffic)을 만들어 낸다. 그러나, 예상된 로드를 처리하기 위한 서버 또는 서버 시스템들을 효과적으로 디자인하기 위해서, 디자이너는 특정한 작동 순간에서(a particular operating point) 서버 로드를 이해할 필요가 있다. 예를 들어, 견고한(robust) 서버 시스템을 디자인하기 위해서 디자이너는 서버들이 특정 용량, 즉 용량의 80%, 이상에서 절대로 동작하지 않도록 요구할 수 있다. 이 경우에, 어떤 종류의 로드가 서버를 80%의 용량에서 동작하도록 하는가를 이해하는 것이 필요하다.
일 실시 예에서, 서버 로드에 대응하는 사용자들의 수를 결정하는 방법은, 네트워크에 연결된 시험 컴퓨터 시스템 상에서 한 명 또는 그 이상의 가상 사용자들을 시뮬레이트하는 것(simulating)을 포함한다. 한 명 또는 그 이상의 가상 사용자들 각각으로부터 하나 또는 그 이상의 클라이언트 요청들(client requests)이 네트워크에 연결된 서버 컴퓨터 시스템 상에서 실행되는 서버 어플리케이션으로 보내진다. 그러면 서버 컴퓨터 시스템의 로드를 나타내는 수치(metric)가 측정된다. 그 다음 상기 측정된 수치는 미리 결정된 값(predetermined value)과 비교되고, 상기 측정된 수치가 상기 미리 결정된 값의 미리 결정된 범위 안에 들어갈 때까지, 한 명 또는 그 이상의 가상 사용자들의 수는 상기 측정된 수치와 상기 미리 결정된 값의 차에 기초하여 변경된다.
다음의 특징들이 한 가지 또는 그 이상 포함될 수 있다. 상기 측정된 수치는 서버 컴퓨터 시스템의 하나 또는 그 이상의 프로세서들에 걸리는 로드를 나타낼 수 있다. 그 수치를 측정한다는 것은, 주기적으로 로드를 측정해서 메모리에 각각의 측정 값을 저장하는 것을 포함할 수 있다. 상기 방법은 동작 평균(running average)을 계산하고, 그리고/또는 그 수치에 로패스 필터(low pass filter)를 적용하는 것을 포함할 수 있다. 그러한 수치는 윈도우 관리 측정 서비스(Window Management Instrumentation service), 알스테드 성능 측정 서비스(rstat.d performance measurement service), 및/ 또는 서버 컴퓨터 시스템에서 실행되는 커스텀 성능 측정 툴(custom performance measurement tool)에 의해서 제공될 수 있다(또한, 한 명 또는 그 이상의 가상 사용자들의 수를 바꾼다는 것은 상기 측정된 수치와 상기 미리 결정된 값 사이의 퍼센티지(percentage) 차이에 기초하여 한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 것을 포함할 수 있다.
다른 실시 예는, 서버 로드에 따라서 사용자들의 수를 결정하는 컴퓨터 프로그램 제품으로서 컴퓨터 판독가능 매체(computer readable medium) 상에 상주하는 컴퓨터 프로그램 제품이다. 컴퓨터 프로그램 제품의 명령들은, 프로세서에 의해서 실행될 때, 프로세서가 동작들을 수행하도록 한다. 그러한 동작들에는 네트워크에 연결된 시험 컴퓨터 시스템 상에서 한 명 또는 그 이상의 가상 사용자들을 시뮬레이션하는 것을 포함한다. 하나 또는 그 이상의 클라이언트 요청들은 한 명 또는 그 이상의 가상 사용자들 각각으로부터 네트워크에 연결된 서버 컴퓨터 시스템 상에서 실행되는 서버 어플리케이션에 보내진다. 그 다음 서버 컴퓨터 시스템의 로드를 나타내는 수치(a metric)가 측정된다. 상기 측정된 수치는 미리 결정된 값과 비교되고, 상기 측정 수치가 상기 미리 결정된 값의 미리 결정된 범위 내에 들어갈 때까지 상기 측정된 수와 상기 미리 결정된 값의 차이를 기초로 한 명 또는 그 이상의 가상 사용자들의 수를 변경한다.
다음의 특징들 중 한 가지 또는 그 이상이 포함될 수 있다. 상기 측정된 수치는 서버 컴퓨터 시스템의 하나 또는 그 이상의 프로세서에 걸리는 로드를 나타내는 것일 수 있다. 그 수치를 측정한다는 것은 주기적으로 그 수치를 측정해서 메모리에 각각의 측정값을 저장하는 것을 포함할 수 있다. 상기 오퍼레이션들(operations)은 동작 평균(running average)을 계산하고 , 그리고/또는 그 수치에 로패스 필터(low pass filter)를 적용하는 것을 포함할 수 있다. 그러한 수치는 윈도우 관리 측정 서비스(Window Management Instrumentation service), 알스테드 성능 측정 서비스(rstat.d performance measurement service), 및/ 또는 서버 컴퓨터 시스템에서 실행되는 커스텀 성능 측정 툴(custom performance measurement tool)에 의해서 제공될 수 있다. 또한, 한 명 또는 그 이상의 가상 사용자들의 수를 바꾼다는 것은 상기 측정된 수치와 상기 미리 결정된 값 사이의 퍼센티지(percentage) 차이에 기초하여 한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 것을 포함할 수 있다.
또 다른 실시 예에서, 서버 로드에 대응하는 사용자들의 수를 결정하는 시스템은 하나 또는 그 이상의 프로세서들, 하나 또는 그 이상의 메모리들 및 상기 하나 또는 그 이상의 메모리들에 저장된 하나 또는 그 이상의 소프트웨어 명령들(instruction sets)을 포함한다. 상기 하나 또는 그 이상의 소프트웨어 명령들(instruction sets)은, 상기 하나 또는 그 이상의 프로세서들에 의해 실행될 때, 상기 하나 또는 그 이상의 프로세서들이 오퍼레이션들(operations)을 수행하도록 한다. 상기 오퍼레이션들은 네트워크에 연결된 시험 컴퓨터 시스템 상에서 한 명 또는 그 이상의 가상 사용자들을 시뮬레이트 하는 것을 포함한다. 한 명 또는 그 이상의 가상 사용자들 각각으로부터 하나 또는 그 이상의 클라이언트 요청들(client requests)이 네트워크에 연결된 서버 컴퓨터 시스템 상에서 실행되는 서버 어플리케이션으로 보내진다. 그러면 서버 컴퓨터 시스템의 로드를 나타내는 수치(metric)가 측정된다. 그 다음 상기 측정된 수치는 미리 결정된 값과 비교되고, 상기 측정된 수치가 상기 미리 결정된 수치의 미리 결정된 범위 안에 들어갈 때까지 한 명 또는 그 이상의 가상 사용자들의 수는 상기 측정된 수치와 상기 미리 결정된 수치의 차에 기초하여 변경된다.
다음의 특징들 중 한가지 또는 그 이상을 포함할 수 있다. 상기 측정된 수치는 서버 컴퓨터 시스템의 하나 또는 그 이상의 프로세서에 걸리는 로드를 측정한 수치일 수 있다. 그 수치를 측정한다는 것은 주기적으로 그 수치를 측정해서 메모리에 각각의 측정값을 저장하는 것을 포함할 수 있다. 상기 오퍼레이션들(operations)은 동작 평균(running average)을 계산하고 , 그리고/또는 그 수에 로패스 필터(low pass filter)를 적용하는 것을 포함할 수 있다. 상기 측정된 수치는 윈도우 관리 측정 서비스(Window Management Instrumentation service), 알스테이드 실행 측정 서비스(rstat.d performance measurement service), 및/ 또는 서버 컴퓨터 시스템에서 실행되는 커스텀 성능 측정 툴(custom performance measurement tool)에 의해서 제공될 수 있다. 또한, 한 명 또는 그 이상의 가상 사용자들의 수치를 바꾸는 것은 상기 측정된 수치와 상기 미리 결정된 값 사이의 퍼센티지(percentage) 차에 기초하여 한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 것을 포함할 수 있다.
도 1 은 분산 컴퓨팅 네트워크(distributed computing network)에 연결된 서버 시험 프로세스의 다이어그램도이다.
도 2 는 도 1의 시험 시스템 구성 프로세스의 순서도이다.
도면들에서 유사한 참조번호들은 유사한 엘리멘트들을 나타낸다.
도 1 은 서버 시험 프로세스(10)를 도시한다. 여기서 서버 시험 프로세스(10)는 시험 컴퓨터(12)상에 상주(reside)할 수 있으며 이 시험 컴퓨터(12)에 의해서 실행될 수 있다. 상기 시험 컴퓨터(12)는 네트웍(14)(예를 들어, 인터넷 또는 구내 통신망(LAN))에 연결될 수 있다. 시험 컴퓨터(12)의 예들에는 개인용 컴퓨터, 서버 컴퓨터, 서버 또는 개인용 컴퓨터들의 시리즈(series), 미니 컴퓨터, 및 메인프레임 컴퓨터 등이 포함될 수 있지만, 이에 한정되는 것은 아니다.
도 1은 또한 서버 어플리케이션(16)을 도시한다. 여기서, 서버 응용프로그램(16)은 서버 컴퓨터(18)에 상주할 수 있고 이 컴퓨터에 의해서 실행될 수 있다. 서버 컴퓨터(18)는 또한 도 1에서 보여주는 바와 같이 네트워크(14)에 연결될 수 있다. 서버 컴퓨터(18)의 예들에도 개인용 컴퓨터, 서버 컴퓨터, 서버 또는 개인용 컴퓨터들의 시리즈, 미니 컴퓨터, 및 메인프레임 컴퓨터 등을 포함할 수 있으나, 이에 한정되는 것은 아니다.
서버 어플리케이션(16)은 클라이언트 어플리케이션(client application)으로부터 요청들, 입력, 또는 다른 통신들을 받아들일 수 있는 모든 서버 어플리케이션일 수 있다. 예를 들어, 서버 어플리케이션(16)은 웹 서버, 어플리케이션 서버, 파일 전송 프로토콜(FTP) 서버, 또는 사용자로부터(예를 들어 사용자(20)과 같이) 요청들 또는 입력을 받아들일 수 있는 다른 서버일 수 있다. 서버 어플리케이션의 예로는 Microsoft IIS 서버및 IBM WebSphere 서버가 포함될 수 있다.(Mirosoft는 미국, 다른 국가들, 또는 양쪽 모두에서 마이크로 소프트사의 상표다; 그리고 IBM및 WebSphere는 미국, 다른 국가들, 또는 양쪽 모두에서 인터내셔널 비지니스 머신 코포레이션(International Business Machines Corporation)의 상표 또는 등록 상표이다).
상기 서버 컴퓨터(18)은 네트워크 오퍼레이팅 시스템(network operating system)을 실행(run)할 수 있다. 네트워크 오퍼레이팅 시스템에는, 예를 들어, 마이크로 소프트 윈도 엑스피 서버(Microsoft Windows XP Server); 노벨 넷웨어(Novell Netware); 또는 레드헷 리눅스(Redhat Linux) 등이 포함될 수 있지만, 이에 한정되는 것은 아니다.(Novel 및 Netware는 미국, 다른 국가들, 또는 양쪽 모두에서 노벨 코오프레이션의 등록 상표이며, Red Hat은 미국, 다른 국가들, 또는 양쪽 모두에서 레드햇 코오프레이션의 등록상표이며, 그리고 Linux는 미국, 다른 국가들, 또는 양쪽 모두에서 라이너스 토발드스(Linus Torvalds)의 등록 상표이다)
아래에서 아주 자세히 설명하겠지만, 서버 시험 프로세스(10)는 한 명 또는 그 이상의 가상 사용자들을 시뮬레이트(simulate)할 수 있고, 한 명 또는 그 이상의 가상 사용자들로부터 하나 또는 그 이상의 클라이언트 요청들을(client requests) 서버 어플리케이션(16)에 보낼 수 있다. 서버 시험 프로세스(10)는 또한 서버 컴퓨터 시스템의 로드를 나타내는(representing) 수치를 측정할 수 있으며 그 수치를 미리 결정된 값과 비교할 수 있다. 서버 시험 프로세스(10)는 상기 수치가 상기 미리 결정된 값의 미리 결정된 범위 내에 들어갈 때까지 시뮬레이트된(simulated) 가상 사용자들의 수를 변경할 수 있다. 시뮬레이트된 가상 사용자의 수의 변경은 상기 측정 수치와 상기 미리 결정된 값 사이의 차이를 기초로 할 수 있다.
서버 시험 프로세스(10)의 명령 세트들(instruction sets) 및 서브루틴들(subroutines)은 시험 컴퓨터(12) 속에 포함된 하나 또는 그 이상의 프로세서들(도시되지 않음) 및 하나 또는 그 이상의 메모리 아키텍쳐들(architectures)(도시되지 않음)에 의해 실행될 수 있다. 여기서, 서버 시험 프로세스(10)의 명령 세트들(instruction sets) 및 서브루틴들(subroutines)에는 하나 또는 그 이상의 소프트웨어 모듈들(software modules) 및 하나 또는 그 이상의 소프트웨어 명령들(instructions)이 포함될 수 있으며, 시험 컴퓨터(12)에 연결된 저장 디바이스(22)에 저장될 수 있다. 비슷하게, 서버 어플리케이션(16)의 명령 세트들(instruction sets) 및 서브루틴들(subroutines)은 서버 컴퓨터(18) 속에 포함된 하나 또는 그 이상의 프로세서들(도시되지 않음) 및 하나 또는 그 이상의 메모리 아키텍쳐들(architectures)(도시되지 않음)에 의해서 실행되어 질 수 있다. 여기서, 서버 어플리케이션(16)의 명령 세트들(instruction sets) 및 서브루틴들(subroutines)에는 하나 또는 그 이상의 소프트웨어 모듈들(software modules) 및 하나 또는 그 이상의 소프트웨어 명령들(instructions)이 포함될 수 있으며, 서버 컴퓨터(18)에 연결된 저장 디바이스(24) 상에 저장될 수 있다. 저장 디바이스들(22),(24)에는 하드 디스크 장치들; 솔리드 스테이트 드라이브들(solid state drives); 테입 드라이브들(tape drives); 광학 드라이브들(optical drives); 레이드 어레이들(RAID arrays); 랜덤 액세스 메모리(random access memory: RAM); 및 읽기전용 메모리(read-only memory: ROM)등이 포함될 수 있으나, 이에 한정되는 것은 아니다.
서버 시험 프로세스(10) 및 서버 어플리케이션(16)의 명령들 및 서브루틴들은, 예를 들면, 아이비엠 엑스엘 컴파일러(IBM XL complier), 비쥬얼 스트디오 컴파일러(Visual Studio complier), 또는 어셈블러(assembler) 등과 같은 컴파일러를 사용해서 생성될 수 있다.(Visual Studio는 미국, 다른 나라들, 또는 양쪽 모두에서 마이크로 소프트사의 상표이다). 명령들 및 서브루틴들은 또한 자바스크립트 스크립트들(JavaScript scripts), 또는 다른 종류의 소프트웨어 코드(자바와 자바를 기초로 하는 모든 상표들 및 로고들은 미국, 다른 나라들, 또는 양쪽 모두에서 선 마이크로사의(sun Microsystems, Inc.) 상표이다) 와 같은 스크립트를 사용하여 생성될 수 있다. 일반적으로, 선행 기술에서 알 수 있듯이, 서버 시험 프로세스(10) 및 서버 어플리케이션(16)의 명령들 및 서브루틴들은 프로세서에 의해 실행될 수 있는 명령들 및 서브루틴들을 생성하는 모든 방법을 통해서 생성될 수 있다.
다양한 클라이언트 전자 디바이스들(client electronic devices)이 네트워크(14)에 연결될 수 있다. 클라이언트 전자 디바이스들의 예에는 시험 컴퓨터(12), 서버 컴퓨터(18), 랩탑(laptop)(26), 개인 디지탈 보조장치(personal digital assistant)(도시되지 않음), 데이터의 수신 및 전송이 가능한 핸드폰(data-enabled, cellular telephone)(도시되지 않음), 및 네트워크 전용 디바이스(도시되지 않음)등이 포함될 수 있으나, 이에 한정되는 것은 아니다. 한 명 또는 그 이상의 사용자들(즉, 사용자(20))은 서버 시험 프로세스(10) 또는 서버 어플리케이션(16)과 같은 다양한 툴들 및 어플리케이션들에 접근할 수 있는데, 네트워크(14)에 연결된 모든 디바이스로부터, 또는 상기 툴(tool) 혹은 어플리케이션이 상주하는 디바이스로부터 직접적으로(즉, 시험 컴퓨터(12) 및/또는 서버 컴퓨터(18)로부터 직접적으로) 접근할 수 있다. 클라이언트 전자 디바이스들은 네트워크(14)에 직접 연결되어 있거나, 또는 네트워크(28)를 통해서 네트워크(14)에 간접적으로 연결되어 있을 수 있다. 예를 들어, 시험 컴퓨터(12)는 팬텀 링크 선(phantom link line)(30)으로 도시한 바와 같은 제2(secondary) 네트워크(28)을 통해서 네트워크(14)에 간접적으로 연결될 수 있다.
저장 디바이스들(22),(24)에는 하드 디스크 장치들; 솔리드 스테이트 드라이브들(solid state drives); 테입 드라이브들(tape drives); 광학 드라이브들(optical drives); 레이드 어레이들(RAID arrays); 랜덤 액세스 메모리(random access memory: RAM);읽기전용 메모리(read-only memory: ROM), 컴팩 플래쉬(compact flash: CF) 저장 디바이스들, 시큐어 디지털(secure digital: SD) 저장 디바이스들, 및 메모리 스틱 저장 디바이스들(memory stick storage devices) 등이 포함될 수 있으나 이에 한정되는 것은 아니다.
다양한 클라이언트 전자 디바이스들은, 직접 또는 간접적으로 네트워크(14)(또는 네트워크(28))에 연결될 수 있다. 예를 들어, 시험 컴퓨터(12)는 하드와이어드 네트워크 접속(hardwired network connection)을 통해서 네트워크(14)에 직접적으로 연결되어 있음을 볼 수 있다. 랩탑(laptop)(26)은, 네트워크(14)에 직접 연결되어있는 무선 접속 포인트(34)(wireless access point 34)(즉, WAP)와 랩탑(26) 사이에 설정된(established) 무선 통신 채널(32)를 통해서, 네트워크(14)에 무선으로 연결되어있는 것을 볼 수 있다. 무선 접속 포인트(34)(WAP 34)는, 예를 들어, 랩탑(26)과 무선 접속 포인트(34) 사이에 무선 통신 채널(32)를 설정할수 있는 IEEE802.11a, 802.11b, 802.11g, Wi-Fi, 및/또는 블루투스(Bluetooth) 디바이스일 수 있다.
선행 기술에서 알려진 것처럼, 모든 IEEE 802.11x의 사양들(specifications)은 경로 공유(path sharing)를 위해 이더넷 프로로콜(Ethernet protocol) 및 충돌 회피 케리어 센스 멀티플 억세스(carrier sense multiple access with collision avoidance, 즉 CSMA/CA)를 사용할 수 있다. 다양한 802.11x 사양들은, 예를 들어, 페이즈-쉬프트 키잉(phase-shift keying)(즉, PSK) 모듈레이션(modulation) 또는 컴플리멘터리 코드 키잉(complementary code keying)(즉, CCK) 모듈레이션을 사용할 수 있다. 선행 기술에서 알려진 것처럼, 블루투스는 텔레커뮤니케이션 산업의 사양인데, 이는 이동 전화들(mobile phones), 컴퓨터들, 및 개인 디지털 보조 디바이스들이 근거리 무선 연결을 이용하여 상호 연결될 수 있게 한다.
도 2에서 서버 컴퓨터(18)는 스텝(102)에서 서버 시험 프로세스(10)를 실행할 수 있다. 서버 시험 프로세스(10)는 스텝(104)에서 한 명 또는 그 이상의 가상 사용자들을 시뮬레이트(simulate)하며, 스텝(106)에서 하나 또는 그 이상의 클라이언트 요청들을 한 명 또는 그 이상의 가상 사용자들 각각으로부터 서버 어플리케이션 (16)에 보낼 수 있다. 상기 서버 시험 프로세스(10)는 또한 스텝(108)에서 서버 컴퓨터 시스템(18)에 걸리는 로드를 나타내는 수치를 측정하며, 스텝(110)에서 그 수치를 미리 결정된 값과 비교할 수 있다. 서버 시험 프로세스(10)는 또한 스텝(112)에서 시뮬레이트된 가상 사용자들의 수를 상기 측정된 수치가 미리 결정된 값의 미리 결정된 범위 내가 될 때까지 변경할 수 있다. 시뮬레이트된 가상 사용자들 수의 변경은, 적어도 부분적으로, 상기 측정된 수치와 상기 미리 결정된 값 사이의 차에 기초할 수 있다. 시뮬레이트된 가상 사용자들 수의 변경이 평형 상태(steady state), 즉, 상기 측정된 수치와 상기 미리 결정된 값 사이의 차가 아주 적거나 영(zero)이 되어 가상 사용자들의 수가 더 이상 변하지 않는 상태에 도달하면, 서버 시험 프로세스(10)은 스텝(114)에서 가상 사용자들의 수를 기록할 수 있는데, 이는 상기 미리 결정된 값과 관련된 사용자들의 수를 나타낸다.
서버 컴퓨터(18)은 스텝(102)에서 서버 어플리케이션(16)을 실행시킬 수 있다. 서버 어플리케이션(16)은 사용자로부터 입력을 받아들이거나(accept input) 혹은 사용자를 위해서 출력을 제공하는(provides output) 모든 종류의 서버 어플리케이션이 될 수 있다. 여기서, 사용자로부터 입력을 받아들이는 것 및/또는 사용자를 위해서 출력을 제공하는 것은 클라이언트 어플리케이션으로부터 입력을 받아들이는 것(예를 들어, 클라이언트 어플리케이션에 대한 사용자 입력에 응답하여) 및 /또는 사용자에 의해 수신될 수 있는 출력을 제공하는것(예를 들어, 클라이언트 어플리케이션을 통해서)을 포함할 수 있다. 한 실시 예에서, 서버 어플리케이션(16)은 사용자들(예를 들어, 랩탑(26)에 의해서 실행된 웹 브라우저 어플리케이션(web browser application)(도시되지 않음)을 통한 사용자(20))로부터 웹 페이지 요청들(web page requests)을 받고, 이에 응답하여, 웹페이지 및/또는 웹 컨텐트를 네트워크(14)를 통해서 전송함으로써 사용자(20)에 제공하는(web content) 웹 서버일 수 있다. 그러나, 서버 어플리케이션(16)은, 이메일 서버, 웹 서버, 파일 전송 프로토콜(FTP) 서버, 서치 엔진(search engine), 커스텀 서버, 및 기타 서버 어플리케이션을 포함하는 모든 종류의 서버 어플리케이션을 포함할 수 있지만, 이것에 한정되는 것은 아니다.
통상적으로, 서버 컴퓨터(18)는 서버 어플리케이션(16)을 실행한다. 다시 말하며, 서버 컴퓨터(18)의 프로세서는 서버 어플리케이션(16)에 관련된 모든 명령들을 실행할 수 있다. 서버 어플리케이션(16)을 실행하면 서버 컴퓨터(18)의 프로세서 사이클들 및/또는 기타 프로세서 자원들(resources)을 소모할 수 있다. 마찬가지로, 서버 어플리케이션(16)은, 기타 하드웨어 자원들, 즉 서버 컴퓨터(18)과 관련된 하드웨어 자원을 사용할 수 있다. 서버 어플리케이션(16)은, 예를 들어, 선택적으로 네트워크 커넥션들(connections), 입출력 포트들(I/O ports), 하드 드라이브, 메모리, 또는 서버 컴퓨터(18)과 관련된 기타 모든 하드웨어 자원들을 이용할 수 있다. 서버 어플리케이션(16)은 또한 소프트웨어 자원들, 예를 들어 서버 컴퓨터(18)에서 실행되는 소프트웨어 어플리케이션들을 이용할 수 있다. 예를 들어, 서버 컴퓨터(18)은 소프트웨어 암호 서비스를 제공할 수 있다. 서버 어플리케이션(16)이 데이터 암호화를 필요로 하면, 예를 들어, 서버 어플리케이션(16)은 서버 컴퓨터(18)에서 실행되는 암호화 서비스를 사용할 수 있다.
서버 어플리케이션(16)이 서버 컴퓨터(18)의 하드웨어 및 소프트웨어 자원들을 사용할 수 있는 정도는 서버 어플리케이션(16)에 얼마나 많은 로드가 걸리느냐에 따라 달라질 수 있다. 예를 들어, 서버 어플리케이션(16)이 복잡한 일처리로 바쁘게 되면, 서버 어플리케이션(16)은 서버 컴퓨터(18)의 시피유 사이클들(CPU cycles)을 더 많이 사용할 수 있다. 마찬가지로, 서버 어플리케이션(16)이 큰 용량의 데이터를 저장 또는 전송한다면, 서버 어플리케이션(16)은 서버 컴퓨터(18)의 하드 드라이브 또는 네트워크 대역폭(bandwidth)을 더 많이 사용할 수 있다. 반면에, 서버 어플리케이션(16)이 바쁘지 않다면, 서버 컴퓨터(18)의 자원들을 더 적게 사용하게 될 것이다. 예를 들어, 서버 어플리케이션(16)이 데이터를 저장하지 않거나 또는 전송하지 않는다면, 서버 어플리케이션(16)이 서버 컴퓨터(18)의 하드 드라이브 및/ 또는 네트워크 대역폭을 사용한다 하더라도 아주 적게 사용 것이다.
서버 어플리케이션(16)이 사용자들로부터의 입력을 받아들이거나 사용자들에게 출력을 제공하면, 그 다음에 사용자들이 서버 어플리케이션(16)에 접속하는 양은 서버 어플리케이션(16)의 로드에 영향을 줄 수 있으며, 그 다음 차례로 서버 어플리케이션(16)이 서버 컴퓨터(18)의 하드웨어 및 소트프웨어 자원들을 사용하는 정도에 영향을 준다. 예를 들어, 많은 사용자들이 서버 어플리케이션(16)에 대하여 접근 및/ 또는 요청들을 만들면, 서버 어플리케이션(16)은 많은 사용자들에게 서비스를 제공하기 위해 서버 컴퓨터(18)의 시피유 사이클들(CPU cycles)을 더 많이 필요로 할 것이다. 마찬가지로, 서버 어플리케이션(16)은 많은 사용자들에게 서비스를 제공하기 위해 더 많은 하드 드라이브 또는 네트워크 대역폭(또는 기타 모든 하드웨어 또는 소프트웨어 자원들)이 필요로 할 것이다. 이로부터 추론해 볼 때, 적은 수의 사용자들이 서버 어플리케이션(18)에 접근하는 경우, 그 다음 서버 어플리케이션(18)은 사용자들에게 서비스를 제공하는데 있어서 적은 하드웨어 및 소프트웨어 자원들을 필요로 할 것이다. 예를 들어, 서버 어플리케이션(16)이 웹 서버이고, 많은 사용자들이 같은 시간에 웹 서버에 접근하려고 시도한다면, 서버 어플리케이션 (16)은 요청들을 처리하기 위해 보다 많은 서버 컴퓨터(18)의 시피유사이클들(CPU cycles)을 사용해야할 것이고, 저장된 웹 페이지들을(web pages)을 불러오기 위해서, 보다 많은 서버 컴퓨터(18)의 하드 드라이브 대역폭을 사용해야할 것이며, 많은 사용자들에게 요구된 웹 페이지들을 보내기 위해 더 많은 서버 컴퓨터(18)의 네트워크 대역폭을 사용해야될 것이다.
그러나, 서버 어플리케이션(16)에 너무 많은 사용자들이 접근하거나 또는 요청들이 만들아지면, 서버 어플리케이션(16) 및 서버 컴퓨터(18)는 모든 사용자들에 대하여 효과적으로 서비스를 할 수 없을 수도 있다. 예를 들어, 서버 컴퓨터(18)는 시피유 사이클을 고갈 시킬 수 있고 너무 바쁘게 되어 모든 사용자들의 요청들을 처리할 수 없게 될 수 있다. 이 시나리오(scenario)에서는, 모든 사용자들의 요청들을 처리하는데 보통 때보다 더 오랜 시간이 걸릴 수 있다. 이와 반대의 시나리오에서는, 일부의 사용자 요청들이 서버 어플리케이션(16)에 의해서 드롭(drop)될 수 있다. 이들 두 경우 모두는 빠르고 효과적으로 처리하는 서버에 접속하기를 원하는 사용자들에게 실망을 줄 수 있다. 서버 컴퓨터(18)의 소프트웨어 및 하드웨어 자원들이 주어졌을 때, 서버 어플리케이션(16)이 사용자들에게 서비스할 수 있는 최적, 최대, 및/또는 최소의 동작 지점(operating point)이 존재할 수 있다.
따라서, 서버 시험 프로세스(10)는 스텝(104)에서 서버 어플리케이션(16)의 가상 사용자들을 시뮬레이트(simulate) 할 수 있다. 각각의 가상 사용자는 서버 어플리케이션(16)의 사용자를 시뮬레이트하는 스크립트(a script), 프로그램, 또는 프로그램의 일부일 수 있다. 서버 시험 프로세스(10)는 네트워크 트래픽(traffic) 및/또는 서버 요청들을 발생시켜 스텝(106)에서 이들을 서버 어플리케이션에 보낼 수 있다. 각각의 가상 사용자에 대하여, 예를 들어, 서버 시험 프로세스(10)는 서버 어플리케이션(16)의 사용자의 통상적인 네트워크 트래픽 및 /또는 서버 요청들을 발생시킬 수 있다. 예를 들어, 서버 어플리케이션(16)이 웹 서버이면, 시험 프로세스(10)에 의해 시뮬레이트되는 가상 사용자들은 통상적인 웹 사용자들일 수 있다. 그들은 웹을 브라우징(browsing)하고 웹 서버, 즉 서버 어플리케이션(16)을 접근하는 사용자의 통상적인 웹 트래픽, 웹 요청들, 및 웹 다운로드들을 발생시킬 수 있다.
서버 시험 프로세스(10)는 스텝(104)에서 어떤 수의 사용자에 대해서도 시뮬레이트 할 수 있으며, 스텝(106)에서 그들의 트래픽 및 요청들을 서버 어플리케이션(16)에 보낼 수 있다. 예를 들어, 서버 시험 프로세스(10)는 스텝(104)에서 많은 수의 사용자들(이를 테면, 특정한 시나리오를 위해 사용자들의 수가 100,000 이라고 하자), 또는 적은 수의 사용자들(즉, 특정한 시나리오를 위해 한 명 또는 사용자가 없다고 하자)을 시뮬레이트 할 수 있다. 이들 시뮬레이트된 가상 사용자들 각각은 스텝(106)에서 네트워크 트래픽 및 요청들을 서버 어플리케이션(16)에 보낼 수 있다. 이러한 방법으로, 서버 시험 프로세스(10)는 현실의 서버 사용 시나리오를 시뮬레이트할 수 있다. 예를 들어, 만일 서버 어플리케이션(16)이, 필드에 인스톨 되었을 때(installed in-field), X인의 사용자들로부터 클라이언트 요청들을 받을 것을 예상한다면, 서버 시험 프로세스(10)은 스텝(104)에서 X인의 가상 사용자들을 시뮬레이트하여 스텝(106)에서 X인의 시뮬레이트된 사용자들로부터의 클라이언트 요청들을 서버 어플리케이션(16)에 보낼 수 있다.
하나의 사용 시나리오에서(in one usuage scenario), 개발자는 얼마나 많은 사용자들이 서버 컴퓨터(18)에 특정 정도까지 로드를 걸 수 있는 지를 결정함으로써 서버 컴퓨터(18)의 효율을 극대화하기를 원할 수 있다. 다시 말해서, 만일 특정 서버에 대한 타겟 시피유(target CPU) 로드가 80%로 규정된다면, 개발자는 얼마나 많은 사용자들이 서버 어플리케이션(16)에 접속할 때 80%의 시피유 로드를 발생시키는(create) 지 알고 싶어할 것이다. 따라서, 서버 시험 프로세스(10)은 스텝(108)에서 서버 어플리케이션(16)의 수치(metric)(즉, CPU의 로드)를 측정하고, 스텝(110)에서 상기 측정된 수치를 미리 결정된 값(예를 들어, 80%)과 비교하여, 만일 상기 측정된 수치와 상기 미리 결정된 값이 다르면 스텝(112)에서 시뮬레이트된 가상 사용자들의 수를 변경할 수 있다.
스텝(112)에서 서버 시험 프로세스(10)는 상기 측정한 수치가 상기 미리 결정된 값과 같거나 또는 프리세트 마진(preseset margin) 내에 있을 때까지 가상 사용자들의 수를 변경 혹은 조절할 수 있다. 경우에 따라서는, 가상 사용자들의 수를 증가시키는 것이 상기 측정된 수치의 값을 증가시킬 수 있다. 예를 들어, 서버 시험 프로세스(10)은 X인의 가상 사용자들을 시뮬레이트 할 수 있다. 만약, 타겟 시피유 로드가 80% 이고, 서버 시험 프로세스(10)가 스텝(108)에서 시피유 로드를 측정했을 때 60%로 측정된다면, 서버 시험 프로세스(10)는 시피유 로드가 80%로 될 때까지 또는 80%의 프리세트 마진 내로 들어올 때까지 X인의 가상 사용자들을 증가시킬 수 있다(예를 들어, +/- 2%, 또는 다른 수치의 프리세트 마진). 마찬가지로, 측정된 시피유 로드가 타겟 80% 보다 크면, 서버 시험 프로세스(10)는 X인의 가상 사용자들을 시피유 로드가 80%로 될 때까지 또는 80%의 프리세트 마진 안에 들어 올 때까지 감소시킬 수 있다.
다른 경우들에서는, 가상 사용자들의 수를 증가시키면 상기 측정된 수치는 실제로 감소될 수 있다. 예를 들어, 상기 측정된 수치가 시피유 아이들 타임(idle time)인 경우를 살펴보자. 만일 타겟 시피유 아이들 타임이 20% 이고, 상기 측정된 시피유 아이들 타임이 30% 이면, 서버 시험 프로세스(10)는 X인인 가상 사용자들의 수를 더 증가시킬 수 있으며, 따라서, 서버 컴퓨터(18)의 시피유를 더 바쁘게 만들어서 아이들 타임을 감소시키는 것이 가능하다. 이 경우, 서버 시험 프로세스(10)는 측정된 시피유 아이들 타임이 20%로 감소하거나 또는 20% 안으로 들어올 때까지 X인인 가상 사용자들의 수를 증가시킬 수 있다. 마찬가지로, 측정된 시피유 아이들 타임이 10%이면, 서버 시험 프로세스(10)는 X인인 가상 사용자들의 수를 측정된 시피유 아이들 타임이 20%로 증가할 때까지 또는 20%안에 들어올 때까지 감소시킬 수 있다.
상기 측정된 수치 및 상기 미리 결정된 값은 서버 컴퓨터(18) 및/또는 서버 어플리케이션(16)의 성능에 관한 어떤 측정치(any measurement) 또는 척도(indicator)일 수 있다. 상기 수치 및 상기 미리 결정된 값은 시피유 로드, 시피유 아이들 타임, 하드 드라이브 대역폭, 하드 드라이브의 남은 공간(free space), 네트워크 사용량(usage), 소프트웨어 쓰레드들의(threads) 수, 또는 서버 컴퓨터(18) 또는 서버 어플리케이션(16)의 성능을 표시하는 기타 척도 일 수 있다. 한 실시 예에서, 서버 시험 프로세스(10)는 스텝(108)에서 서버 컴퓨터(18)에서 실행되는 윈도우 관리 측정(Window Management Instrumentation: WMI) 또는, 알스테드 인터페이스(rstat.d interface)를 접근함으로서 상기 수치를 측정할 수 있다. 상기 WMI 및/또는 알스테드 서비스는 서버 컴퓨터(18)의 성능에 관한 수치의 통계와 측정을 제공하는 도구들이 될 수 있다. 서버 시험 프로세스(10)는 스텝(108)에서 이들 WMI 및/또는 알스테이드 수치에 접근하여 측정할 수 있다. 당 분야에 통상의 지식을 가진자들이 알고 있는 것과 같이, 성능에 관한 수치를 제공하는 모든 이 사용될 수 있으며, 이러한 툴에는, 예를 들면, WMI, 알스테드, 커스텀 측정 툴(custom measurement tool), 또는 서버 컴퓨터(18)의 성능을 측정할 수있는 기타 툴을 모두 포함하지만, 이에 한정되는 것은 아니다. 커스텀 측정 툴은 서버 컴퓨터(18)의 성능에 관한 수치를 측정할 목적을 위해서 전적으로(in whole) 또는 부분적으로(in part) 개발된 소프트웨어 프로그램 및/또는 하드웨어 툴일 수 있다.
어떤 측정된 수치(some metrics)의 값은 변화(vary)하거나 변동(fluctuate) 될 수 있다. 이러한 변동들은 틀리거나 또는 정확하지 않은 측정 결과를 초래할 수 있다. 구하는 측정값(measurement of interest)이 변동하는 측정치의 합계값(an aggregate) 혹은 평균값(average) 일 경우도 있겠지만, 상기 측정된 수치의 값에서 변화들 및 변동들은 서버 시험 프로세스(10)의 실패를 가져올 수 있다(throw off). 예를 들어, 시피유 로드가 변동하는 수치(fluctuating metric)이면, 서버 시험 프로세스(10)에 의해 순차적으로 측정된 수치들(sequential measurements) 또한 변동될 수 있다. 예를 들어 말하자면, 타겟 시피유 값이 80%이면 서버 컴퓨터(18)에 걸리는 실제 중간 시피유 로드는 80%이지만, 측정 오류 또는 시피유 로드 측정상의 특성(nature) 때문에 서버 컴퓨터(18)의 시피유 로드에 관한 개개의 측정값은 70%와 90%사이에서 변화한다. 이 경우에, 서버 컴퓨터(18)은 원하는 로드에서 동작하지만, 어떤 주어진 순간에 측정값은 70%와 90%사이에 있는 어떤 값이 될 수 있다. 만일 어떤 특정 순간의 측정 값이 70%이면, 서버 시험 프로세스는 실수로(erroneously) 가상 사용자들의 수를 증가시킬 수 있다. 만일 어떤 특정한 순간의 측정 값이 90%이면, 서버 시험 프로세스는 실수로 가상 사용자들의 수를 감소시킬 수 있다. 상기 측정된 수치가 각각의 측정 시마다 변동한다면 서버 시험 프로세스(10)은 스텝(112)에서 각각의 측정값으로 가상 사용자들의 수를 변경할 수 있으므로 안정 상태에 도달할 수 없게 될 것이다.
그러한 변동을 피하기 위해서, 서버 시험 프로세스(10)는 스텝(108)에서 상기 수치를 여러 번 측정하고 스텝(116)에서 각각의 측정값을(measurement) 메모리 또는 저장 디바이스(22)와 같은 컴퓨터 판독가능(readable) 저장 디바이스에 저장할 수 있다. 서버 시험 프로세스(10)가 스텝(116)에서 측정 값들을 저장하면, 서버 시험 프로세스(10)는 스텝(118)에서 측정 값의 변동을 제거하기 위해 측정 값들을 합산(aggregate) 할 수 있다. 서버 시험 프로세스(10)는 스텝(112)에서 가상 사용자들의 수를 바꿔야될지를 결정하기 위해 스텝(118)에서 롤링 평균을(rolling average) 적용하여- 마지막의 몇몇 측정값을 저장하고 그것들의 평균값을 사용하여 측정값의 합계를 구할 수 있다. 서버 시험 프로세스(10)는 또한 로패스 무한 입력 응답(low-pass infinite input response: IIR) 또는 유한 입력 응답(finite input response: FIR) 필터와 같은 로패스 필터를(low-pass filter) 측정값의 변동을 제거하기 위해서 마지막 몇몇의 저장된 측정값들에 적용할 수 있다. 일반적으로, 서버 시험 프로세스(10)는 스텝(118)에서 측정값들로부터 오는 변동 및 변화(fluctuation and variance)를 제거하는 모든 방법으로 측정값들의 합계를 구할 수 있다.
서버 시험 프로세스(10)는 또한 스텝(114)에서 특정 측정 수치(particular metric) 및/ 또는 특정 동작 지점(particular operating point)과 관련된 사용자들의 수를 기록할 수 있다. 예를 들어, 디자이너가 서버 컴퓨터(18)의 시피유 상에서 80%의 로드를 발생시키기 위해서 얼마나 많은 수의 사용자가 있어야 하는지 알기를 원한다고 가정하자. 이 경우, 서버 컴퓨터(18)를 시험하는 동안, 서버 시험 프로세스(10)는 서버 컴퓨터(18)의 시피유 로드를 측정하고 서버 컴퓨터(18)의 시피유 로드가 80%에 도달할 때까지(또는 미리 정한 80%의 프리세트 마진 내에 도달할 때까지) 가상 사용자들의 수를 변경할 수 있다. 서버 시험 프로세스(10)는 서버 컴퓨터(18)의 시피유 로드가 80%에 도달하게 하기 위해 10,000명의 가상 사용자를 시뮬레이트해야만 한다는 것을 발견할 수도 있다. 그러면, 서버 시험 프로세스(10)는 스텝(114)에서 발견된 사용자들의 수를, 예를 들어, 10.000을 서버 컴퓨터(18)의 시피유가 80% 로드가 걸릴 때의 필요한 사용자들의 수로써 기록할 수 있다. 서버 시험 프로세스(10)는 스텝(114)에서 상기 가상 사용자들의 수를 메모리, 저장 디바이스, 파일, 데이터베이스(database), 또는 데이터를 저장할 수 있는 기타 모든 매체에 기록할 수 있다.
한 예에 따르면, 서버 시험 프로세스(10)는 서버가 특정 타겟 로드에 도달하기 위해 필요한 사용자들의 수를 결정하는데 사용되어 질 수 있다. 또 다른 간소화한 예에서, 서버 컴퓨터(18)의 타겟 시피유 로드가 50%이면, 서버 시험 프로세스는 스텝(104)에서 10,000명의 사용자들을 시뮬레이트 할 수 있다. 서버 시험 프로세스(10)는 스텝(108)에서 서버 컴퓨터(18) 상의 시피유 로드를 측정하여 서버 컴퓨터(18)이10,000명의 가상 사용자로 100% 동작한다는 것을 발견할 수 있을 것이다. 50%에 도달하기 위해서 서버 시험 프로세스(10)는 스텝(112)에서 상기 측정된 수치 값(100%) 및 상기 미리 결정된 값(50%)의 퍼센트 혹은 비율에 기초하여 가상 사용자들의 수를 변경할 수 있다. 예를 들어, 미리 결정된 값(50%)이 타겟 값(100%)의 절반이기 때문에, 서버 시험 프로세스(10)는 사용자들의 수를 절반으로 감소시킬 수 있다. 따라서, 서버 시험 프로세스(10)는 가상 사용자들의 수를 10,000명에서 5,000명으로 감소시킬 수 있다. 서버 시험 프로세스(10)는 이러한 프로세스, 즉 가상 사용자들의 수를 증가시키고 감소시키는 프로세스(process)를 미리 결정된 값과 같거나 미리 결정된 값의 범위 안에 들어갈 때까지 반복할 수 있다.
지금까지 여러 실시 예들을 설명했다. 그러나, 다음에 오는 청구항들은 본 발명의 범위를 정의한다.

Claims (18)

  1. 서버 로드에 대응하는 사용자들의 수를 결정하는 방법에 있어서,
    네트워크에 연결되어있는 시험 컴퓨터 시스템 상의 한 명 또는 그 이상의 가상 사용자들을 시뮬레이트하는 단계;
    상기 한 명 또는 그 이상의 가상 사용자들 각각으로부터 하나 또는 그 이상의 클라이언트 요청들(requests)을 상기 네트워크에 연결되어있는 서버 컴퓨터 시스템 상에서 실행되는 서버 어플리케이션에 보내는 단계;
    상기 서버 컴퓨터 시스템 상의 로드를 나타내는(indicative) 수치(a metric)를 측정하는 단계;
    상기 수치를 미리 결정된 값(a predetermined value)과 비교하는 단계; 및
    상기 수치가 상기 미리 결정된 값의 미리 결정된 범위 내에 있을 때까지 상기 수치와 상기 미리 결정된 값의 차에 기초하여 상기 한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 단계
    를 포함하는 서버 로드에 대응하는 사용자들의 수를 결정하는 방법.
  2. 제1항에 있어서,
    상기 수치는 상기 서버 컴퓨터 시스템의 하나 또는 그 이상의 프로세서들 상의 로드를 나타내는 서버 로드에 대응하는 사용자들의 수를 결정하는 방법.
  3. 제1항에 있어서,
    상기 수치를 측정하는 단계는,
    상기 수치를 주기적으로 측정하고 및 각각의 측정 값을 메모리에 저장하는 것
    을 포함하는 서버 로드에 대응하는 사용자들의 수를 결정하는 방법.
  4. 제 3항에 있어서,
    상기 수치를 측정하는 단계는,
    상기 수치의 동작 평균(running average)을 계산하는 단계; 및
    상기 수치에 로패스(low-pass)필터를 적용하는 단계
    중의 하나 이상을 포함하는
    서버 로드에 대응하는 사용자들의 수를 결정하는 방법.
  5. 제1항에 있어서,
    상기 수치를 측정하는 단계는,
    상기 서버 컴퓨터 시스템 상에서 실행되는 윈도우 관리 측정 서비스(Window Management Instrumentation service);
    상기 서버 컴퓨터 시스템 상에서 실행되는 알스테드 성능 측정 서비스(rstat.d performance measurement service); 및
    상기 서버 컴퓨터 시스템 상에서 실행되는 커스텀 측정 툴(custom measurement tool)
    중의 하나 이상에 의해 제공되는 수치를 측정하는 단계
    를 포함하는 서버 로드에 대응하는 사용자들의 수를 결정하는 방법.
  6. 제 1항에 있어서,
    상기 한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 단계는,
    상기 수치와 상기 미리 결정된 값의 퍼센트 차(percentage difference)에, 적어도 부분적으로 기초해서 상기 한 명 또는 그 이상의 가상 사용자들의 수를 바꾸는 단계
    를 포함하는 서버 로드에 대응하는 사용자들의 수를 결정하는 방법.
  7. 서버 로드(a server load)에 대응하는 사용자들 수를 결정하는 컴퓨터 프로그램 제품에서,
    상기 제품은 컴퓨터 판독가능 매체(computer readable medium)에 상주하고(residing), 상기 매체에 저장된 다수의 명령들을 가지며, 프로세서에 의해서 실행될 때, 상기 프로세서가 동작들(operations)을 수행하도록 하되, 상기 동작들은:
    네트워크에 연결되어있는 시험 컴퓨터 시스템 상의 한 명 또는 그 이상의 가상 사용자들을 시뮬레이트하는 동작;
    상기 한 명 또는 그 이상의 가상 사용자들 각각으로부터 하나 또는 그 이상의 클라이언트 요청들(requests)을 상기 네트워크에 연결되어있는 서버 컴퓨터 시스템 상에서 실행되는 서버 어플리케이션에 보내는 동작;
    상기 서버 컴퓨터 시스템 상의 로드를 나타내는(indicative) 수치(a metric)를 측정하는 동작;
    상기 수치를 미리 결정된 값(a predetermined value)과 비교하는 동작; 및
    상기 수치가 상기 미리 결정된 값의 미리 결정된 범위 내에 있을 때까지 상기 수치와 상기 미리 결정된 값의 차에 기초하여 상기 한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 동작
    을 포함하는 컴퓨터 프로그램 제품.
  8. 제7항에 있어서,
    상기 수치는, 상기 서버 컴퓨터 시스템의 하나 또는 그 이상의 프로세서들 상의 로드를 나타내는 컴퓨터 프로그램 제품.
  9. 제7항에 있어서,
    상기 수치를 측정하는 동작은,
    상기 수치를 주기적으로 측정하여 각각의 측정값을 메모리에 저장하는 동작을 포함하는 컴퓨터 프로그램 제품.
  10. 제9항에 있어서,
    상기 수치를 측정하는 동작은,
    상기 수치의 동작 평균(running average)을 계산하는 동작; 및
    상기 수치에 로패스 필터(low pass filter)를 적용하는 동작
    중의 하나 이상을 포함하는
    컴퓨터 프로그램 제품.
  11. 제7항에 있어서,
    상기 수치를 측정하는 동작은,
    상기 서버 컴퓨터 시스템 상에서 실행되는 윈도우 관리 측정 서비스(Window Management Instrumentation service);
    상기 서버 컴퓨터 시스템 상에서 실행되는 알스테드 성능 측정 서비스(rstat.d performance measurement service); 및
    상기 서버 컴퓨터 시스템 상에서 실행되는 커스텀 측정 툴
    중의 하나 이상에 의해 제공되는 수치를 측정하는 동작
    을 포함하는 컴퓨터 프로그램 제품.
  12. 제7항에 있어서,
    한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 동작은 상기 수치와 상기 미리 결정된 값 사이의 퍼센트 차(percentage difference)에 기초해서 한 명 또는 그 이상의 가상 사용자들을 변경하는 동작을 포함하는 컴퓨터 프로그램 제품.
  13. 서버 로드에 대응하는 사용자들의 수를 결정하는 시스템에서,
    하나 또는 그 이상의 프로세서들;
    하나 또는 그 이상의 메모리들;
    하나 또는 그 이상의 메모리들에 저장된 하나 또는 그 이상의 소프트웨어 명령들을 포함하되,
    상기 하나 또는 그 이상의 소프트웨어 명령들은, 하나 또는 그 이상의 프로세서들에서 의해서 실행될 때, 동작들을 수행하며, 상기 동작들은:
    네트워크에 연결되어있는 시험 컴퓨터 시스템 상의 한 명 또는 그 이상의 가상 사용자들을 시뮬레이트하는 동작;
    상기 한 명 또는 그 이상의 가상 사용자들 각각으로부터 하나 또는 그 이상의 클라이언트 요청들(requests)을 상기 네트워크에 연결되어있는 서버 컴퓨터 시스템 상에서 실행되는 서버 어플리케이션에 보내는 동작;
    상기 서버 컴퓨터 시스템 상의 로드를 나타내는(indicative) 수치(a metric)를 측정하는 동작;
    상기 수치를 미리 결정된 값(a predetermined value)과 비교하는 동작; 및
    상기 수치가 상기 미리 결정된 값의 미리 결정된 범위 내에 있을 때까지 상기 수치와 상기 미리 결정된 값의 차에 기초하여 상기 한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 동작
    을 포함하는 서버 로드에 대응하는 사용자들의 수를 결정하는 시스템.
  14. 제13항에 있어서,
    상기 수치는 상기 서버 컴퓨터 시스템의 하나 또는 그 이상의 프로세서들 상의 로드를 나타내는 서버 로드에 대응하는 사용자들의 수를 결정하는 시스템.
  15. 제13항에 있어서,
    상기 수치를 측정하는 동작은 상기 수치를 주기적으로 측정해서 메모리에 각각의 측정값을 저장하는 동작을 포함하는 서버 로드에 대응하는 사용자들의 수를 결정하는 시스템.
  16. 제15항에 있어서,
    상기 수치를 측정하는 동작은,
    상기 수치의 동작 평균(running average)을 계산하는 동작; 및
    상기 수치에 로패스 필터(low pass filter)를 적용하는 동작
    중의 하나 이상을 포함하는
    서버 로드에 대응하는 사용자들의 수를 결정하는 시스템.
  17. 제13항에 있어서,
    상기 수치를 측정하는 동작은,
    상기 서버 컴퓨터 시스템 상에서 실행되는 윈도우 관리 측정 서비스(Window Management Instrumentation service);
    상기 서버 컴퓨터 시스템 상에서 실행되는 알스테드 성능 측정 서비스(rstat.d performance measurement service); 및
    상기 서버 컴퓨터 시스템 상에서 실행되는 커스텀 측정 툴(custom measurement tool)
    중의 하나 이상에 의해 제공되는 수치를 측정하는 동작
    을 포함하는 서버 로드에 대응하는 사용자들의 수를 결정하는 시스템.
  18. 제13항에 있어서,
    한 명 또는 그 이상의 가상 사용자들을 변경하는 동작은, 상기 수치와 상기 미리 결정된 값 사이의 퍼센트 차(percentage difference)에 기초해서 한 명 또는 그 이상의 가상 사용자들의 수를 변경하는 동작
    을 포함하는 서버 로드에 대응하는 사용자들의 수를 결정하는 시스템.
KR1020100017529A 2009-03-31 2010-02-26 서버 로드 용량 결정 시스템 KR20100109368A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/415,369 2009-03-31
US12/415,369 US8301761B2 (en) 2009-03-31 2009-03-31 Determining server load capacity with virtual users

Publications (1)

Publication Number Publication Date
KR20100109368A true KR20100109368A (ko) 2010-10-08

Family

ID=42785622

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100017529A KR20100109368A (ko) 2009-03-31 2010-02-26 서버 로드 용량 결정 시스템

Country Status (4)

Country Link
US (1) US8301761B2 (ko)
JP (1) JP2010244528A (ko)
KR (1) KR20100109368A (ko)
CN (1) CN101853197B (ko)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065161B2 (en) 2003-11-13 2011-11-22 Hospira, Inc. System for maintaining drug information and communicating with medication delivery devices
US9123077B2 (en) 2003-10-07 2015-09-01 Hospira, Inc. Medication management system
US9990110B1 (en) 2006-08-14 2018-06-05 Akamai Technologies, Inc. Private device cloud for global testing of mobile applications
US9154611B1 (en) 2006-08-14 2015-10-06 Soasta, Inc. Functional test automation for gesture-based mobile applications
US9720569B2 (en) 2006-08-14 2017-08-01 Soasta, Inc. Cloud-based custom metric/timer definitions and real-time analytics of mobile applications
CA2666509C (en) 2006-10-16 2017-05-09 Hospira, Inc. System and method for comparing and utilizing activity information and configuration information from multiple medical device management systems
US8595714B1 (en) * 2009-03-04 2013-11-26 Amazon Technologies, Inc. User controlled environment updates in server cluster
US10079716B2 (en) 2009-03-04 2018-09-18 Amazon Technologies, Inc. User controlled environment updates in server cluster
US8271106B2 (en) 2009-04-17 2012-09-18 Hospira, Inc. System and method for configuring a rule set for medical event management and responses
US8605609B2 (en) * 2010-03-11 2013-12-10 Silver Spring Networks, Inc. Simulation of multiple nodes in an internetwork
US9436579B2 (en) 2010-07-19 2016-09-06 Soasta, Inc. Real-time, multi-tier load test results aggregation
US9229842B2 (en) 2010-07-19 2016-01-05 Soasta, Inc. Active waterfall charts for continuous, real-time visualization of website performance data
US9021362B2 (en) 2010-07-19 2015-04-28 Soasta, Inc. Real-time analytics of web performance using actual user measurements
US9251035B1 (en) 2010-07-19 2016-02-02 Soasta, Inc. Load test charts with standard deviation and percentile statistics
US9495473B2 (en) 2010-07-19 2016-11-15 Soasta, Inc. Analytic dashboard with user interface for producing a single chart statistical correlation from source and target charts during a load test
US8341462B2 (en) * 2010-07-19 2012-12-25 Soasta, Inc. System and method for provisioning and running a cross-cloud test grid
WO2012078316A1 (en) * 2010-12-09 2012-06-14 Northwestern University Endpoint web monitoring system and method for measuring popularity of a service or application on a web server
CN103037410A (zh) * 2011-09-30 2013-04-10 中兴通讯股份有限公司 一种应用于eNB系统的性能控制方法及装置
US9921934B1 (en) * 2011-10-14 2018-03-20 Amazon Techologies, Inc. Storage process metrics
US9785533B2 (en) 2011-10-18 2017-10-10 Soasta, Inc. Session template packages for automated load testing
EP2769357B1 (en) 2011-10-21 2023-08-30 ICU Medical, Inc. Medical device update system
CN102750211A (zh) * 2012-06-11 2012-10-24 苏州阔地网络科技有限公司 一种压力测试方法及系统
WO2014138446A1 (en) 2013-03-06 2014-09-12 Hospira,Inc. Medical device communication method
US9772923B2 (en) 2013-03-14 2017-09-26 Soasta, Inc. Fast OLAP for real user measurement of website performance
US20150066531A1 (en) 2013-08-30 2015-03-05 James D. Jacobson System and method of monitoring and managing a remote infusion regimen
US9662436B2 (en) 2013-09-20 2017-05-30 Icu Medical, Inc. Fail-safe drug infusion therapy system
US10311972B2 (en) * 2013-11-11 2019-06-04 Icu Medical, Inc. Medical device system performance index
US9584395B1 (en) 2013-11-13 2017-02-28 Netflix, Inc. Adaptive metric collection, storage, and alert thresholds
ES2731219T3 (es) 2013-11-19 2019-11-14 Icu Medical Inc Sistema y método de automatización de bomba de infusión
US10601674B2 (en) 2014-02-04 2020-03-24 Akamai Technologies, Inc. Virtual user ramp controller for load test analytic dashboard
CA2945647C (en) 2014-04-30 2023-08-08 Hospira, Inc. Patient care system with conditional alarm forwarding
US9724470B2 (en) 2014-06-16 2017-08-08 Icu Medical, Inc. System for monitoring and delivering medication to a patient and method of using the same to minimize the risks associated with automated therapy
US9539383B2 (en) 2014-09-15 2017-01-10 Hospira, Inc. System and method that matches delayed infusion auto-programs with manually entered infusion programs and analyzes differences therein
US10346431B1 (en) 2015-04-16 2019-07-09 Akamai Technologies, Inc. System and method for automated run-tme scaling of cloud-based data store
EP3304370B1 (en) 2015-05-26 2020-12-30 ICU Medical, Inc. Infusion pump system and method with multiple drug library editor source capability
NZ750032A (en) 2016-07-14 2020-05-29 Icu Medical Inc Multi-communication path selection and security system for a medical device
US10387282B2 (en) * 2016-09-20 2019-08-20 Rohde & Schwarz Gmbh & Co. Kg Test unit and test method for efficient testing during long idle periods
JP6957194B2 (ja) * 2016-12-13 2021-11-02 キヤノン株式会社 サービスシステム、その制御方法、およびそのプログラム
CN108933709B (zh) * 2017-05-27 2021-03-26 腾讯科技(深圳)有限公司 测试服务器性能的方法、装置和计算机可读存储介质
CN109144846B (zh) * 2017-06-28 2022-07-05 北京京东尚科信息技术有限公司 用于测试服务器的测试方法和装置
CA3106519A1 (en) 2018-07-17 2020-01-23 Icu Medical, Inc. Systems and methods for facilitating clinical messaging in a network environment
US11483402B2 (en) 2018-07-17 2022-10-25 Icu Medical, Inc. Maintaining clinical messaging during an internet outage
WO2020018388A1 (en) 2018-07-17 2020-01-23 Icu Medical, Inc. Updating infusion pump drug libraries and operational software in a networked environment
US11139058B2 (en) 2018-07-17 2021-10-05 Icu Medical, Inc. Reducing file transfer between cloud environment and infusion pumps
AU2019309766A1 (en) 2018-07-26 2021-03-18 Icu Medical, Inc. Drug library management system
US10692595B2 (en) 2018-07-26 2020-06-23 Icu Medical, Inc. Drug library dynamic version management
US11789834B2 (en) * 2019-01-02 2023-10-17 Visa International Service Association Computer and conduit for system testing
CN112333050A (zh) * 2021-01-04 2021-02-05 全时云商务服务股份有限公司 基于模拟会议性能测试方法、装置、设备及存储介质

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005063222A (ja) * 2003-08-15 2005-03-10 Nippon Telegr & Teleph Corp <Ntt> 負荷制御方法および装置、ならびに負荷制御用プログラム
JP4677813B2 (ja) * 2005-03-31 2011-04-27 株式会社日立製作所 サーバ性能計測方法及びサーバ性能計測システム並びにこれらに用いるコンピュータプログラム
JP4810264B2 (ja) * 2006-03-20 2011-11-09 独立行政法人産業技術総合研究所 濃度測定装置
US7657401B2 (en) * 2006-05-31 2010-02-02 International Business Machines Corporation Systems and methods for predicting load test resource requirements
US7908382B2 (en) * 2006-06-07 2011-03-15 International Business Machines Corporation System and method to optimally manage performance's virtual users and test cases
US7620856B2 (en) * 2006-12-28 2009-11-17 Sap Portals Israel Ltd. Framework for automated testing of enterprise computer systems
US7783469B2 (en) * 2007-01-05 2010-08-24 International Business Machines Corporation Methods and computer program products for benchmarking multiple collaborative services provided by enterprise software
JP2008190268A (ja) * 2007-02-07 2008-08-21 Matsushita Electric Ind Co Ltd 通信システムおよびそのプログラム
JP2008234407A (ja) * 2007-03-22 2008-10-02 Toshiba Corp 自動負荷試験装置および自動負荷試験方法
US7757117B2 (en) * 2007-04-17 2010-07-13 International Business Machines Corporation Method and apparatus for testing of enterprise systems
US8631401B2 (en) * 2007-07-24 2014-01-14 Ca, Inc. Capacity planning by transaction type
US7953887B2 (en) * 2008-02-14 2011-05-31 International Business Machines Corporation Asynchronous automated routing of user to optimal host
US8135816B2 (en) * 2008-03-11 2012-03-13 International Business Machines Corporation Coordinating rendezvous of multiple virtual users across multiple distributed devices
US20090271152A1 (en) * 2008-04-28 2009-10-29 Alcatel Load testing mechanism for server-based applications
US8639813B2 (en) * 2008-11-25 2014-01-28 Citrix Systems, Inc. Systems and methods for GSLB based on SSL VPN users
US20100223190A1 (en) * 2009-02-27 2010-09-02 Sean Michael Pedersen Methods and systems for operating a virtual network operations center

Also Published As

Publication number Publication date
CN101853197B (zh) 2013-08-28
JP2010244528A (ja) 2010-10-28
US8301761B2 (en) 2012-10-30
CN101853197A (zh) 2010-10-06
US20100250732A1 (en) 2010-09-30

Similar Documents

Publication Publication Date Title
US8301761B2 (en) Determining server load capacity with virtual users
Yu et al. Stochastic load balancing for virtual resource management in datacenters
JP4675426B2 (ja) 改良されたマルコフ変調ポアソン過程モデルを使用してネットワーク・トラフィックを解析及び生成するための方法、コンピュータ・プログラム
US7702497B2 (en) Method for recommending upgrade components for a computer system
US20030229695A1 (en) System for use in determining network operational characteristics
CN111162934B (zh) 业务服务的测试方法和装置、存储介质、电子装置
CN111817974B (zh) 基于令牌桶的接口限流方法、装置、系统及可读存储介质
CN103078763B (zh) 一种信息存储系统的多协议并行测试方法及系统
US7730352B2 (en) Testing network applications without communicating over a network layer communication link
JP5954430B2 (ja) 運用管理装置、及び、運用管理方法
US10108520B2 (en) Systems and methods for service demand based performance prediction with varying workloads
US9730096B2 (en) Network performance testing in non-homogeneous networks
Barve et al. Fecbench: A holistic interference-aware approach for application performance modeling
US11669374B2 (en) Using machine-learning methods to facilitate experimental evaluation of modifications to a computational environment within a distributed system
CN111858458B (zh) 一种互联通道的调整方法、装置、系统、设备和介质
Calice et al. Mobile-to-mobile opportunistic task splitting and offloading
Bertin et al. Fair scheduling of bag-of-tasks applications using distributed Lagrangian optimization
CN112433908B (zh) 确定检测服务器的间隔时间的方法、系统、设备及介质
US8627326B2 (en) System and methods for using a quantitative application measurement to determine whether to instantiate an application
CN110971478B (zh) 云平台服务性能的压测方法、装置及计算设备
US20230113776A1 (en) Traffic application amount calculation apparatus, method and program
Horvat et al. Real-time WSN communication for access control applications
Straesser et al. Autoscaler Evaluation and Configuration: A Practitioner’s Guideline (Author Preprint)
Skjolden Performance and resource usage of multi-link HTTP in modern smartphones
CN116862549A (zh) 服务成本确定方法、装置、电子设备及非易失性存储介质

Legal Events

Date Code Title Description
A201 Request for examination
E601 Decision to refuse application