[go: up one dir, main page]

KR20210144287A - Method for measuring performance of computing device - Google Patents

Method for measuring performance of computing device Download PDF

Info

Publication number
KR20210144287A
KR20210144287A KR1020200061423A KR20200061423A KR20210144287A KR 20210144287 A KR20210144287 A KR 20210144287A KR 1020200061423 A KR1020200061423 A KR 1020200061423A KR 20200061423 A KR20200061423 A KR 20200061423A KR 20210144287 A KR20210144287 A KR 20210144287A
Authority
KR
South Korea
Prior art keywords
log
computing device
files
chunk
chunk size
Prior art date
Legal status (The legal status 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 status listed.)
Pending
Application number
KR1020200061423A
Other languages
Korean (ko)
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 삼성에스디에스 주식회사
Priority to KR1020200061423A priority Critical patent/KR20210144287A/en
Publication of KR20210144287A publication Critical patent/KR20210144287A/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3442Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for planning or managing the needed capacity
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3457Performance evaluation by simulation

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

A method for measuring performance and a method for analyzing a log of a computing device are provided. An access log of the computing device to be measured is obtained by a client device, and the access log is read and analyzed in a browser running on the client device. The client device automatically generates a test script based on the access log analysis result, and tests the performance of a target computing device using the same.

Description

컴퓨팅 장치의 성능 측정 방법{METHOD FOR MEASURING PERFORMANCE OF COMPUTING DEVICE}MEASURING MEASURING PERFORMANCE OF COMPUTING DEVICE

본 발명은 컴퓨팅 장치의 성능을 측정하는 방법에 관한 것이다. 보다 자세하게는, 컴퓨팅 장치의 성능 측정에 관한 모든 프로세스를 지원하는 솔루션을 제공하는 방법에 관한 것이다.The present invention relates to a method for measuring the performance of a computing device. More particularly, it relates to a method of providing a solution supporting all processes related to performance measurement of a computing device.

웹 서버 등 컴퓨팅 장치의 성능을 측정하는 과정은, 액세스 로그 분석을 통한 성능 측정 시나리오 설계, 부하 테스트를 위한 스크립트 작성 및 테스트 수행, 서버 구성 재설정 및 성능 테스트 결과 제공 등의 단계들로 구성된다.The process of measuring the performance of a computing device such as a web server consists of steps such as designing a performance measurement scenario through access log analysis, writing a script for load testing and performing tests, resetting the server configuration, and providing performance test results.

그런데 컴퓨팅 장치의 성능을 측정하기 위한 종래의 방법들은, 상기 각 단계들을 모두 별도의 툴이나 애플리케이션을 통해 진행해야 한다. 예컨대 Apache Log Viewer를 통해 웹 서버의 액세스 로그를 열람 및 분석하고, 그 분석 결과에 기초하여 Loadrunner 또는 Apache JMeter 등을 통해 부하 스크립트를 작성 및 실행하며, 웹 서버에 직접 접속하여 서버의 각종 설정들을 조정하고, 별도의 툴을 이용하여 웹 서버의 성능 지표 보고서 등 성능 측정 결과를 열람해야만 한다. 다시 말해, 컴퓨팅 장치의 성능을 측정하는 전 과정을 제공하는 단일화된 솔루션은 제공되지 못하고 있다.However, in conventional methods for measuring the performance of a computing device, all of the above steps must be performed through a separate tool or application. For example, it reads and analyzes the access log of the web server through Apache Log Viewer, writes and executes a load script through Loadrunner or Apache JMeter based on the analysis result, and adjusts various settings of the server by directly accessing the web server. In addition, performance measurement results such as web server performance index report must be viewed using a separate tool. In other words, a unified solution that provides the entire process of measuring the performance of a computing device is not provided.

또한 액세스 로그 분석 과정과 부하 스크립트 작성이 각각 별개의 툴/애플리케이션을 통해 제공되므로, 액세스 로그를 분석 결과와 부하 스크립트 생성이 적절히 연계되지 못한다. 예를 들어, 액세스 로그를 분석 결과를 기초로 적절한 부하 스크립트를 자동으로 생성하는 기능은 제공되지 못하고 있다. In addition, since the access log analysis process and load script creation are provided through separate tools/applications, the access log analysis result and load script generation cannot be properly linked. For example, a function that automatically generates an appropriate load script based on the analysis result of the access log is not provided.

유사하게, 부하 스크립트 테스트 결과에 기초하여, 대상 컴퓨팅 장치의 각종 설정들을 자동으로 조정하는 기능 또한 제공되지 못하고 있다. Similarly, a function for automatically adjusting various settings of a target computing device based on a load script test result is also not provided.

따라서, 컴퓨팅 장치의 성능을 측정하는 전 과정을 효율적으로 연계하여 제공하는 단일화된 솔루션이 제공될 필요가 있다. Accordingly, there is a need to provide a unified solution that efficiently connects and provides the entire process of measuring the performance of a computing device.

한편, 웹 서버 등의 액세스 로그를 분석하는 과정은, 액세스 로그가 생성된 서버로부터 클라이언트 장치로 로그를 다운로드 받은 후, 다시 분석용 서버로 액세스 로그를 업로드하여, 분석용 서버 상에서 로그 분석을 수행하는 것이 일반적이다. 통상적으로 액세스 로그 데이터의 양이 매우 방대하고 파일의 수도 많으므로, 장치간 액세스 로그를 수차례 전송하는 과정에서, 상당한 네트워크 대역폭이 낭비되고 있는 실정이다. 또한 안전하게 보관되어야 할 액세스 로그를 여러 장치에 저장하는 것은 보안상의 이슈를 발생시키기도 한다.On the other hand, in the process of analyzing the access log of the web server, etc., after the log is downloaded from the server where the access log is generated to the client device, the access log is uploaded again to the server for analysis, and log analysis is performed on the server for analysis. it is common In general, since the amount of access log data is very large and the number of files is large, considerable network bandwidth is wasted in the process of transmitting the access log between devices several times. Also, storing access logs that should be safely stored in multiple devices may cause security issues.

따라서, 액세스 로그를 네트워크 상의 여러 장치에 전송하지 않고, 로컬에서 간편하게 분석하기 위한 방법이 제공될 필요가 있다.Accordingly, there is a need to provide a method for conveniently analyzing the access log locally without transmitting the access log to multiple devices on the network.

한국등록특허 제10-1553923호 (2015.09.11. 공고)Korean Patent Registration No. 10-1553923 (2015.09.11. Announcement)

본 발명의 몇몇 실시예들을 통해 해결하고자 하는 기술적 과제는, 컴퓨팅 장치의 성능을 측정하는 과정을 효율적으로 연계하여 제공하는 방법을 제공하는 것이다.A technical problem to be solved through some embodiments of the present invention is to provide a method for efficiently linking and providing a process of measuring the performance of a computing device.

본 발명의 몇몇 실시예들을 통해 해결하고자 하는 다른 기술적 과제는, 컴퓨팅 장치의 로그를 네트워크 상의 여러 장치에 전송하지 않고, 로컬 디바이스에서 분석하기 위한 방법을 제공하는 것이다.Another technical problem to be solved through some embodiments of the present invention is to provide a method for analyzing a log of a computing device in a local device without transmitting the log of a computing device to various devices on a network.

본 발명의 몇몇 실시예들을 통해 해결하고자 하는 또 다른 기술적 과제는, 대용량 다수의 로그 파일들을 로컬 디바이스의 브라우저 상에서 병렬적으로 빠르게 분석하기 위한 방법을 제공하는 것이다.Another technical problem to be solved through some embodiments of the present invention is to provide a method for rapidly analyzing a large number of log files in parallel on a browser of a local device.

본 발명의 기술적 과제들은 이상에서 언급한 기술적 과제들로 제한되지 않으며, 언급되지 않은 또 다른 기술적 과제들은 아래의 기재로부터 본 발명의 기술분야에서의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.The technical problems of the present invention are not limited to the technical problems mentioned above, and other technical problems not mentioned will be clearly understood by those skilled in the art from the following description.

상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 로그 분석 방법은, 복수의 로그 파일들을 획득하는 단계와, 상기 복수의 파일들 각각으로부터 데이터를 읽어 들이기 위한 단위인 청크 사이즈를 결정하는 단계와, 상기 복수의 파일들로부터 상기 청크 단위로 상기 로그를 읽어 들이되, 상기 복수의 파일들 중 적어도 일부를 병렬적으로 읽어 들이는 단계와, 상기 로그를 데이터 구조체에 저장하는 단계를 포함한다.A log analysis method according to an embodiment of the present invention for solving the above technical problem includes the steps of: obtaining a plurality of log files; and determining a chunk size, which is a unit for reading data from each of the plurality of files; and reading the log from the plurality of files in the chunk unit, reading at least some of the plurality of files in parallel, and storing the log in a data structure.

일 실시예에서, 상기 청크 사이즈를 결정하는 단계는, 최대 가용 메모리 사이즈에 기초하여 상기 청크 사이즈를 결정하는 단계를 포함할 수 있다. In an embodiment, determining the chunk size may include determining the chunk size based on a maximum available memory size.

일 실시예에서, 상기 청크 사이즈를 결정하는 단계는, 상기 최대 가용 메모리 사이즈를 상기 복수의 로그 파일들의 개수로 나눈 값에 기초하여, 상기 청크 사이즈를 결정하는 단계를 포함할 수 있다. In an embodiment, the determining of the chunk size may include determining the chunk size based on a value obtained by dividing the maximum available memory size by the number of the plurality of log files.

일 실시예에서, 상기 청크 사이즈는 20MB 이하로 결정될 수 있다.In an embodiment, the chunk size may be determined to be 20 MB or less.

일 실시예에서, 상기 최대 가용 메모리 사이즈가 1GB일 경우, 상기 로그 파일들의 개수가 1 이상 50 이하일 때 상기 청크 사이즈는 20MB이고, 상기 로그 파일들의 개수가 51 이상 100 이하일 때 상기 청크 사이즈는 10MB이고, 상기 로그 파일들의 개수가 101 이상 200 이하일 때 상기 청크 사이즈는 5MB이고, 상기 로그 파일들의 개수가 201 이상일 때 상기 청크 사이즈는 1MB일 수 있다.In one embodiment, when the maximum available memory size is 1 GB, the chunk size is 20 MB when the number of log files is 1 or more and 50 or less, and when the number of log files is 51 or more and 100 or less, the chunk size is 10 MB, and , when the number of log files is 101 or more and 200 or less, the chunk size may be 5 MB, and when the number of log files is 201 or more, the chunk size may be 1 MB.

일 실시예에서, 상기 로그를 데이터 구조체에 저장하는 단계는, 상기 청크 단위로 읽어 들인 상기 로그의 각각의 라인을 딥 카피(deep copy)하여 상기 데이터 구조체에 저장하는 단계를 포함할 수 있다. In an embodiment, the storing of the log in the data structure may include deep copying each line of the log read in chunk units and storing the deep copy in the data structure.

일 실시예에서, 상기 각각의 라인을 딥 카피하여 상기 데이터 구조체에 저장하는 단계는, 상기 로그의 하나의 라인이 저장된 제1 자바스크립트 객체를 획득하는 단계와, 상기 제1 자바스크립트 객체를 JSON 문자열로 변환하는 단계와, 상기 JSON 문자열을 제2 자바스크립트 객체로 변환하는 단계를 포함할 수 있다. In one embodiment, the deep copying of each line and storing it in the data structure includes: obtaining a first JavaScript object in which one line of the log is stored; and converting the first JavaScript object to a JSON string. and converting the JSON string into a second JavaScript object.

일 실시예에서, 상기 JSON 문자열로 변환하는 단계는 JSON.stringify 함수를 호출하는 단계를 포함할 수 있다. In an embodiment, the converting to the JSON string may include calling a JSON.stringify function.

일 실시예에서, 상기 JSON 문자열을 상기 제2 자바스크립트 객체로 변환하는 단계는 JSON.parse 함수를 호출하는 단계를 포함할 수 있다. In an embodiment, converting the JSON string into the second JavaScript object may include calling a JSON.parse function.

일 실시예에서, 상기 로그를 분석하는 방법에 포함된 각 단계들은, 상기 컴퓨팅 장치에서 실행되는 브라우저에 의해 수행되는 것일 수 있다.In an embodiment, each step included in the method of analyzing the log may be performed by a browser running on the computing device.

일 실시예에서, 상기 로그를 분석하는 방법에 포함된 각 단계들은, 외부 장치와의 통신 없이 상기 컴퓨팅 장치에 의해 수행되는 것일 수 있다.In an embodiment, each step included in the method of analyzing the log may be performed by the computing device without communication with an external device.

상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 컴퓨팅 장치의 성능 측정 방법은, 대상 컴퓨팅 장치의 액세스 로그를 분석하는 단계와, 상기 액세스 로그 분석 결과에 기초하여 테스트 스크립트를 자동으로 생성하는 단계와, 상기 테스트 스크립트를 실행하여 상기 대상 컴퓨팅 장치의 성능을 테스트하는 단계와, 상기 테스트 수행 결과를 디스플레이하는 단계를 포함한다. 상기 액세스 로그를 분석하는 단계는, 상기 대상 컴퓨팅 장치의 복수의 액세스 로그 파일들을 획득하는 단계와, 상기 복수의 파일들 각각으로부터 데이터를 읽어 들이기 위한 단위인 청크 사이즈를 결정하는 단계와, 상기 복수의 파일들로부터 상기 청크 단위로 상기 액세스 로그를 읽어 들이되, 상기 복수의 파일들 중 적어도 일부를 병렬적으로 읽어 들이는 단계와, 상기 액세스 로그를 데이터 구조체에 저장하는 단계를 포함할 수 있다.A method for measuring performance of a computing device according to an embodiment of the present invention for solving the above technical problem includes the steps of analyzing an access log of a target computing device, and automatically generating a test script based on the access log analysis result and executing the test script to test the performance of the target computing device, and displaying the test execution result. The analyzing of the access log may include: obtaining a plurality of access log files of the target computing device; determining a chunk size that is a unit for reading data from each of the plurality of files; The method may include reading the access log from files in the chunk unit, reading at least some of the plurality of files in parallel, and storing the access log in a data structure.

상기 기술적 과제를 해결하기 위한 본 발명의 일 실시예에 따른 컴퓨터 판독 가능한 비일시적 기록 매체는, 복수의 로그 파일들을 획득하는 단계와, 상기 복수의 파일들 각각으로부터 데이터를 읽어 들이기 위한 단위인 청크 사이즈를 결정하는 단계와, 상기 복수의 파일들로부터 상기 청크 단위로 상기 로그를 읽어 들이되, 상기 복수의 파일들 중 적어도 일부를 병렬적으로 읽어 들이는 단계와, 상기 로그를 데이터 구조체에 저장하는 단계를 포함하는 방법을 컴퓨터로 하여금 수행하도록 하는 컴퓨터 프로그램이 저장된 것이다.A computer-readable non-transitory recording medium according to an embodiment of the present invention for solving the above technical problem includes the steps of acquiring a plurality of log files, and a chunk size as a unit for reading data from each of the plurality of files determining , reading the log from the plurality of files in the chunk unit, reading at least some of the plurality of files in parallel, and storing the log in a data structure A computer program for causing a computer to perform a method comprising a computer program is stored.

도 1은 본 발명의 일 실시예에 따른 컴퓨팅 장치의 성능 측정 방법을 설명하기 위한 도면이다.
도 2는 도 1을 참조하여 설명한 컴퓨팅 장치의 성능 측정 방법의 순서도이다.
도 3 및 도 4는 본 발명의 다른 일 실시예에 따른 액세스 로그 분석 방법을 설명하기 위한 도면이다.
도 5는 도 3 및 도 4를 참조하여 설명한 액세스 로그 분석 방법의 순서도이다.
도 6 내지 도 9b는 도 5를 참조하여 설명한 액세스 로그 분석 방법의 일부 단계들을 보다 구체적으로 설명하기 위한 도면이다.
도 10은 본 발명의 몇몇 실시예들에 따른 객체 배치 결정 장치를 구현할 수 있는 예시적인 컴퓨팅 장치를 설명하기 위한 도면이다.
1 is a diagram for explaining a method of measuring performance of a computing device according to an embodiment of the present invention.
FIG. 2 is a flowchart of a method for measuring performance of a computing device described with reference to FIG. 1 .
3 and 4 are diagrams for explaining an access log analysis method according to another embodiment of the present invention.
5 is a flowchart of an access log analysis method described with reference to FIGS. 3 and 4 .
6 to 9B are diagrams for explaining in more detail some steps of the access log analysis method described with reference to FIG. 5 .
10 is a diagram for describing an exemplary computing device capable of implementing an object arrangement determining apparatus according to some embodiments of the present invention.

이하, 첨부된 도면을 참조하여 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명의 기술적 사상은 이하의 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 이하의 실시예들은 본 발명의 기술적 사상을 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명의 기술적 사상은 청구항의 범주에 의해 정의될 뿐이다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. Advantages and features of the present invention and methods of achieving them will become apparent with reference to the embodiments described below in detail in conjunction with the accompanying drawings. However, the technical spirit of the present invention is not limited to the following embodiments, but may be implemented in various different forms, and only the following embodiments complete the technical spirit of the present invention, and in the technical field to which the present invention belongs It is provided to fully inform those of ordinary skill in the art of the scope of the present invention, and the technical spirit of the present invention is only defined by the scope of the claims.

각 도면의 구성요소들에 참조부호를 부가함에 있어서, 동일한 구성요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가지도록 하고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략한다.In adding reference numerals to the components of each drawing, it should be noted that the same components are given the same reference numerals as much as possible even though they are indicated on different drawings. In addition, in describing the present invention, if it is determined that a detailed description of a related known configuration or function may obscure the gist of the present invention, the detailed description thereof will be omitted.

다른 정의가 없다면, 본 명세서에서 사용되는 모든 용어(기술 및 과학적 용어를 포함)는 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 공통적으로 이해될 수 있는 의미로 사용될 수 있다. 또 일반적으로 사용되는 사전에 정의되어 있는 용어들은 명백하게 특별히 정의되어 있지 않는 한 이상적으로 또는 과도하게 해석되지 않는다. 본 명세서에서 사용된 용어는 실시예들을 설명하기 위한 것이며 본 발명을 제한하고자 하는 것은 아니다. 본 명세서에서, 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다.Unless otherwise defined, all terms (including technical and scientific terms) used herein may be used with the meaning commonly understood by those of ordinary skill in the art to which the present invention belongs. In addition, terms defined in a commonly used dictionary are not to be interpreted ideally or excessively unless clearly defined in particular. The terminology used herein is for the purpose of describing the embodiments and is not intended to limit the present invention. As used herein, the singular also includes the plural unless specifically stated otherwise in the phrase.

또한, 본 발명의 구성 요소를 설명하는 데 있어서, 제1, 제2, A, B, (a), (b) 등의 용어를 사용할 수 있다. 이러한 용어는 그 구성 요소를 다른 구성 요소와 구별하기 위한 것일 뿐, 그 용어에 의해 해당 구성 요소의 본질이나 차례 또는 순서 등이 한정되지 않는다. 어떤 구성 요소가 다른 구성요소에 "연결", "결합" 또는 "접속"된다고 기재된 경우, 그 구성 요소는 그 다른 구성요소에 직접적으로 연결되거나 또는 접속될 수 있지만, 각 구성 요소 사이에 또 다른 구성 요소가 "연결", "결합" 또는 "접속"될 수도 있다고 이해되어야 할 것이다.In addition, in describing the components of the present invention, terms such as first, second, A, B, (a), (b), etc. may be used. These terms are only for distinguishing the components from other components, and the essence, order, or order of the components are not limited by the terms. When a component is described as being “connected”, “coupled” or “connected” to another component, the component may be directly connected or connected to the other component, but another component is between each component. It should be understood that elements may be “connected,” “coupled,” or “connected.”

명세서에서 사용되는 "포함한다 (comprises)" 및/또는 "포함하는 (comprising)"은 언급된 구성 요소, 단계, 동작 및/또는 소자는 하나 이상의 다른 구성 요소, 단계, 동작 및/또는 소자의 존재 또는 추가를 배제하지 않는다.As used herein, “comprises” and/or “comprising” refers to the presence of one or more other components, steps, operations and/or elements mentioned. or addition is not excluded.

이하, 본 발명의 몇몇 실시예들에 대하여 첨부된 도면에 따라 상세하게 설명한다.Hereinafter, some embodiments of the present invention will be described in detail with reference to the accompanying drawings.

도 1은 본 발명의 일 실시예에 따른 컴퓨팅 장치의 성능 측정 방법을 설명하기 위한 도면이다. 도 1을 참조하면, 웹 서버 등의 컴퓨팅 장치(3)의 성능을 측정하는 과정은 클라이언트 장치(1)(예컨대, 사용자의 로컬 컴퓨터)와의 상호 작용으로 이루어진다. 도 1에는 도시되어 있지 않지만, 컴퓨팅 장치(3)의 성능 측정 과정에는 클라이언트 장치(1) 외에 별도의 분석용 서버가 사용되기도 한다. 사용자는 성능 측정 대상 컴퓨팅 장치(3)로부터 컴퓨팅 장치(3)에서 생성된 액세스 로그 파일들을 클라이언트 장치(1)로 다운로드 받아서, 클라이언트 장치(1) 상에서 또는 분석용 서버 상에서 로그를 분석하고, 대상 컴퓨팅 장치(3)의 성능 측정 테스트 시나리오를 설계한다. 성능 측정 테스트 시나리오는, 대상 컴퓨팅 장치(3)에 대한 서비스 요청 등 대상 컴퓨팅 장치(3)를 상대로 한 부하(load)를 발생시키는 테스트 스크립트를 포함한다. 성능 측정 테스트 시나리오에 따라 클라이언트 장치(1) 또는 클라이언트 장치(1)의 제어를 받는 다른 에이전트 장치들은 대상 컴퓨팅 장치(3)를 대상으로 테스트 스크립트에 따라 부하를 가하여 테스트를 실행한다. 대상 컴퓨팅 장치(3)에 대한 테스트가 완료되면, 테스트 결과가 사용자의 클라이언트 장치(1)로 제공된다.1 is a diagram for explaining a method of measuring performance of a computing device according to an embodiment of the present invention. Referring to FIG. 1 , a process of measuring the performance of a computing device 3 such as a web server is performed through interaction with a client device 1 (eg, a user's local computer). Although not shown in FIG. 1 , a separate analysis server may be used in addition to the client device 1 in the performance measurement process of the computing device 3 . The user downloads the access log files generated by the computing device 3 from the performance measurement target computing device 3 to the client device 1, analyzes the log on the client device 1 or on the server for analysis, and performs target computing Design a performance measurement test scenario of the device 3 . The performance measurement test scenario includes a test script that generates a load on the target computing device 3 , such as a service request for the target computing device 3 . According to the performance measurement test scenario, the client device 1 or other agent devices under the control of the client device 1 apply a load to the target computing device 3 according to the test script to execute the test. When the test on the target computing device 3 is completed, the test result is provided to the user's client device 1 .

도 2는 도 1을 참조하여 설명한 컴퓨팅 장치의 성능 측정 방법을 설명하기 위한 순서도이다.FIG. 2 is a flowchart illustrating a method of measuring performance of the computing device described with reference to FIG. 1 .

도 2에 도시된 성능 측정 방법의 각 단계는 예컨대 클라이언트 장치(1)와 같은 컴퓨팅 장치에 의해 수행될 수 있다. 다시 말하면, 상기 성능 측정 방법의 각 단계는 컴퓨팅 장치의 프로세서에 의해 실행되는 하나 이상의 인스트럭션들로 구현될 수 있다. 상기 성능 측정 방법에 포함되는 모든 단계는 하나의 물리적인 컴퓨팅 장치에 의하여 실행될 수도 있을 것이나, 상기 방법의 제1 단계들은 제1 컴퓨팅 장치에 의하여 수행되고, 상기 방법의 제2 단계들은 제2 컴퓨팅 장치에 의하여 수행될 수도 있다. 이하에서는, 상기 성능 측정 방법의 각 단계가 클라이언트 장치(1)에 의해 수행되는 것을 가정하여 설명을 이어가도록 한다. 다만, 설명의 편의를 위해, 상기 성능 측정 방법에 포함되는 각 단계의 동작 주체는 그 기재가 생략될 수도 있다.Each step of the performance measurement method shown in FIG. 2 may be performed by, for example, a computing device such as the client device 1 . In other words, each step of the performance measurement method may be implemented as one or more instructions executed by a processor of a computing device. All steps included in the performance measurement method may be executed by one physical computing device, but the first steps of the method are performed by a first computing device, and the second steps of the method are performed by a second computing device may be performed by Hereinafter, it is assumed that each step of the performance measurement method is performed by the client device 1 to continue the description. However, for convenience of description, the description of the operating subject of each step included in the performance measurement method may be omitted.

본 실시예에 따른 성능 측정 방법에서는, 우선 성능 측정 테스트 시나리오의 설계를 위하여, 대상 컴퓨팅 장치(3)에서 생성된 액세스 로그가 획득된다. 예를 들어, 관심 대상 기간 동안에 대상 컴퓨팅 장치(3)에서 생성되어 축적된 액세스 로그 파일들이 클라이언트 장치(1)로 다운로드 된다.In the performance measurement method according to the present embodiment, first, an access log generated in the target computing device 3 is acquired for designing a performance measurement test scenario. For example, access log files generated and accumulated in the target computing device 3 during the period of interest are downloaded to the client device 1 .

단계(S10)에서는 대상 컴퓨팅 장치(3)의 액세스 로그 파일들이 로딩되고, 액세스 로그 파일들의 내용이 분석된다.In step S10, the access log files of the target computing device 3 are loaded, and contents of the access log files are analyzed.

단계(S20)에서는, 상기 액세스 파일들에 대한 분석 결과에 기초하여, 대상 컴퓨팅 장치(3)의 테스트 시나리오가 설계된다. 구체적으로, 테스트 시나리오는, 대상 컴퓨팅 장치(3)를 상대로 한 부하(load)를 발생시키는 테스트 스크립트를 포함한다. 액세스 파일들에 대한 분석 결과에 기초하여, 적절한 테스트 스크립트가 자동으로 생성될 수 있다.In step S20 , a test scenario of the target computing device 3 is designed based on the analysis result of the access files. Specifically, the test scenario includes a test script that generates a load on the target computing device 3 . Based on the analysis result of the access files, an appropriate test script may be automatically generated.

단계(S30)에서는, 단계(S20)에서 생성된 테스트 스크립트가 실행됨으로써, 대상 컴퓨팅 장치(3)에 대한 테스트가 수행된다. 상기 테스트 스크립트는 대상 컴퓨팅 장치(3)에 대한 네트워크 접근, 웹 서비스 요청, DB 조회 등 대상 컴퓨팅 장치(3)를 상대로 한 다양한 부하(load)를 발생시키는 스크립트이다. 상기 테스트 스크립트는, 클라이언트 장치(1) 및/또는 클라이언트 장치(1)의 제어를 받는 복수의 에이전트 장치들에 의하여, 실행될 수 있다. In step S30 , the test script generated in step S20 is executed, thereby performing a test on the target computing device 3 . The test script is a script that generates various loads on the target computing device 3 , such as network access to the target computing device 3 , web service request, and DB inquiry. The test script may be executed by the client device 1 and/or a plurality of agent devices under the control of the client device 1 .

단계(S30)에서는, 상기 테스트가 수행되는 동안에, 대상 컴퓨팅 장치(3)의 상태가 모니터링 및 기록된다. 대상 컴퓨팅 장치(3)의 상태는 대상 컴퓨팅 장치(3)의 자원 이용률, 단위 시간당 네트워크 트래픽 및 저장장치 I/O 횟수 등을 포함할 수 있다. 대상 컴퓨팅 장치(3)의 상태는 대상 컴퓨팅 장치(3) 또는 대상 컴퓨팅 장치(3)와 통신 가능하도록 연결된 별도의 모니터링 장치에 의해 모니터링 및 기록될 수 있다. In step S30, while the test is performed, the state of the target computing device 3 is monitored and recorded. The state of the target computing device 3 may include a resource utilization rate of the target computing device 3 , network traffic per unit time, and the number of storage device I/O counts. The state of the target computing device 3 may be monitored and recorded by the target computing device 3 or a separate monitoring device communicatively connected to the target computing device 3 .

단계(S40)에서는, 대상 컴퓨팅 장치(3)에 대한 성능 테스트의 결과가 제공된다. 성능 테스트 결과는 테스트가 수행되는 동안에 모니터링된 대상 컴퓨팅 장치(3)의 상태 및 이를 기초로 분석된 성능 지표들을 적어도 일부 포함할 수 있다. 대상 컴퓨팅 장치(3)에서 생성된 테스트 결과 데이터가 클라이언트 장치(1)에 전송되거나, 클라이언트 장치(1)의 디스플레이를 통해 사용자에게 디스플레이될 수 있다.In step S40 , the result of the performance test for the target computing device 3 is provided. The performance test result may include at least a part of the state of the target computing device 3 monitored while the test is performed and performance indicators analyzed based thereon. The test result data generated by the target computing device 3 may be transmitted to the client device 1 or displayed to the user through the display of the client device 1 .

지금까지 도 1 및 도 2를 참조하여, 본 발명의 일 실시예에 따라 클라이언트 장치(1)와 대상 컴퓨팅 장치(3) 간의 상호 작용을 통해 대상 컴퓨팅 장치(3)의 성능을 측정하는 과정을 설명하였다. 이하에서는, 대상 컴퓨팅 장치(3)의 성능을 측정하는 과정 중의 일부인 로그 분석 단계(S10)에 관하여 도 3 내지 도 9b를 참조하여 보다 자세히 설명하기로 한다. 이하에서는 설명의 편의를 위하여 액세스 로그를 분석하는 방법을 예시적으로 설명하였으나, 본 발명에 따른 로그 분석 방법은 다른 유형의 로그 분석에 적용될 수 있음을 이해할 것이다.So far, a process of measuring the performance of the target computing device 3 through the interaction between the client device 1 and the target computing device 3 according to an embodiment of the present invention will be described with reference to FIGS. 1 and 2 . did. Hereinafter, the log analysis step ( S10 ), which is a part of the process of measuring the performance of the target computing device 3 , will be described in more detail with reference to FIGS. 3 to 9B . Hereinafter, a method of analyzing an access log has been exemplarily described for convenience of description, but it will be understood that the log analysis method according to the present invention can be applied to other types of log analysis.

도 3 및 도 4는 본 발명의 다른 일 실시예에 따른 액세스 로그 분석 방법을 설명하기 위한 도면이다.3 and 4 are diagrams for explaining an access log analysis method according to another embodiment of the present invention.

도 3을 참조하면, 본 실시예에 따른 액세스 로그 분석 방법은, 클라이언트 장치(1)의 브라우저(11)에서 실행되는 프로그램으로 구현되어, 브라우저(11) 상에서 수행될 수 있다. 본 실시예에 따른 액세스 로그 분석 방법은, 클라이언트 장치(1) 외의 다른 외부 장치와의 통신 없이, 상기 브라우저(11)에 의해 수행될 수 있다.Referring to FIG. 3 , the access log analysis method according to the present embodiment may be implemented as a program executed in the browser 11 of the client device 1 , and may be performed on the browser 11 . The access log analysis method according to the present embodiment may be performed by the browser 11 without communication with an external device other than the client device 1 .

본 실시예에서, 분석 대상 액세스 로그 파일들(31)은 브라우저(11)에 의해 액세스 된다. 구체적으로 브라우저(11)의 파일 리더 모듈(111)에 의해, 상기 액세스 로그 파일들(31)이 오픈된다. 파일 리더 모듈(111)이 상기 로그 파일들(31)에 포함된 데이터를 실제로 읽어 내는 단위를 본 명세서에서는 청크(chunk)라고 지칭한다. 파일 리더 모듈(111)은 청크 사이즈 단위로 로그 파일(31)을 읽어 들여서, 라인 단위로 로그 데이터를 처리한다. 파일 리더 모듈(111)은, 하나의 청크에 포함된 모든 라인들에 대한 처리가 완료되면, 로그 파일(31)로부터 다음 청크를 읽어 들여서, 라인 단위의 로그 데이터 처리를 계속한다.In the present embodiment, the access log files 31 to be analyzed are accessed by the browser 11 . Specifically, the access log files 31 are opened by the file reader module 111 of the browser 11 . A unit in which the file reader module 111 actually reads data included in the log files 31 is referred to as a chunk in this specification. The file reader module 111 reads the log file 31 in units of chunk size and processes log data in units of lines. When processing for all lines included in one chunk is completed, the file reader module 111 reads the next chunk from the log file 31 and continues processing log data in line units.

각각의 라인 단위의 로그 데이터는, 브라우저(11)의 분석 모듈(113)에 의해 처리된다. 브라우저(11)의 분석 모듈(113)은 라인 단위의 로그 데이터로부터 분석 데이터를 추출하고 저장한다. 로그 데이터로부터 추출되는 분석 데이터는, 예컨대 초당 트랜잭션 수(TPS: Transaction per Second), 동시 접속자 수(Concurrent Users), 응답 소요 시간(Response Time) 등, 종래에 본 기술 분야의 통상의 기술자들에게 잘 알려진 다양한 사항들을 포함할 수 있다.Log data of each line unit is processed by the analysis module 113 of the browser 11 . The analysis module 113 of the browser 11 extracts and stores the analysis data from the log data in units of lines. Analysis data extracted from log data, for example, the number of transactions per second (TPS), the number of concurrent users (Concurrent Users), the response time (Response Time), and the like, are well known to those skilled in the art in the prior art. It may include a variety of known items.

이어서 분석 데이터는 브라우저(11)의 뷰어 모듈(115)에 제공되어, 사용자에게 디스플레이될 수 있다.The analysis data may then be provided to the viewer module 115 of the browser 11 and displayed to the user.

도 4는 브라우저(11)의 분석 모듈(113)에 의해 처리되는 로그 데이터의 구성을 보다 자세히 설명하기 위한 도면이다. 도 4는 참조하면, 로그 데이터의 각각의 라인은, 액세스가 발생한 시간, 클라이언트의 IP 주소, 클라이언트에 의해 요청된 주소와 요청 방식, 요청 처리 결과 코드, 요청 처리에 소요된 시간 등의 필드를 포함할 수 있다. 상기 정보들은 텍스트 형태로 로그의 각 라인에 저장될 수 있다. 로그 데이터의 각 라인이 구분자(separator)에 의해 각각의 필드로 구분되면, 각각의 필드의 정보들이 적절히 처리될 수 있게 된다. 상기 로그 데이터에 포함된 정보들로부터 TPS, 동시 접속자 수, 응답 소요 시간 등의 정보가 추출되며, 적절한 방식에 따라 구분되어 저장될 수 있다.4 is a diagram for explaining the configuration of log data processed by the analysis module 113 of the browser 11 in more detail. Referring to FIG. 4 , each line of log data includes fields such as the time the access occurred, the IP address of the client, the address requested by the client and the request method, the request processing result code, the time taken to process the request, etc. can do. The information may be stored in each line of the log in text form. When each line of log data is divided into fields by a separator, information of each field can be appropriately processed. Information such as TPS, number of simultaneous users, and response time is extracted from the information included in the log data, and may be stored separately according to an appropriate method.

도 5는 도 3 및 도 4를 참조하여 설명한 액세스 로그 분석 방법의 순서도이다. 도 5에 도시된 액세스 로그 분석 방법은, 도 2를 참조하여 설명한 컴퓨팅 장치 성능 측정 방법의 일부로서 수행될 수 있다. 도 2를 참조하여 설명한 성능 측정 방법과 마찬가지로, 도 5에 도시된 액세스 로그 분석 방법의 각 단계는 예컨대 클라이언트 장치(1)와 같은 컴퓨팅 장치에 의해 수행될 수 있다. 다시 말하면, 상기 액세스 로그 분석 방법의 각 단계는 컴퓨팅 장치의 프로세서에 의해 실행되는 하나 이상의 인스트럭션들로 구현될 수 있으며, 상기 액세스 로그 분석 방법에 포함되는 모든 단계는 하나의 또는 그 이상의 물리적인 컴퓨팅 장치에 의하여 실행될 수 있다. 이하에서는, 상기 액세스 로그 분석 방법의 각 단계가 클라이언트 장치(1)에 의해 수행되는 것을 가정하여 설명을 이어가도록 한다. 5 is a flowchart of an access log analysis method described with reference to FIGS. 3 and 4 . The access log analysis method illustrated in FIG. 5 may be performed as a part of the computing device performance measurement method described with reference to FIG. 2 . Similar to the performance measurement method described with reference to FIG. 2 , each step of the access log analysis method illustrated in FIG. 5 may be performed by, for example, a computing device such as the client device 1 . In other words, each step of the access log analysis method may be implemented as one or more instructions executed by a processor of a computing device, and all steps included in the access log analysis method are performed by one or more physical computing devices. can be implemented by Hereinafter, it is assumed that each step of the access log analysis method is performed by the client device 1 to continue the description.

도 5를 참조하면, 본 실시예에 따른 액세스 로그 분석 방법은, 복수의 액세스 로그 파일들을 획득하는 단계(S100), 로그 파일들을 읽어 들일 청크 사이즈를 결정하는 단계(S200), 복수의 액세스 로그 파일들로부터 청크 단위로 액세스 로그를 병렬적으로 판독(read)하는 단계(S300), 및 액세스 로그를 데이터 구조체에 저장하는 단계(S400)를 포함한다.Referring to FIG. 5 , the access log analysis method according to the present embodiment includes the steps of obtaining a plurality of access log files ( S100 ), determining a chunk size from which the log files are to be read ( S200 ), and a plurality of access log files It includes a step of reading the access log in chunks from the data in parallel (S300), and storing the access log in a data structure (S400).

먼저 단계(S100)에서, 로그 분석 대상 기간 동안 대상 컴퓨팅 장치(3)에서 생성되어 축적된 복수의 액세스 로그 파일들이 획득된다. 상기 복수의 액세스 로그 파일들은, 네트워크를 통하여 대상 컴퓨팅 장치(3)로부터 클라이언트 장치(1)로 다운로드됨으로써 획득될 수 있다. 상기 액세스 로그 파일들은 통상적으로 수 기가바이트 이상의 매우 큰 사이즈를 가진다. 또한 로그 분석 대상 기간에 따라 다르지만, 상용 서비스를 제공하는 서버에서 생성되어 축적되는 액세스 로그 파일들의 개수는 매우 많은 것이 일반적이며, 액세스 로그 파일들의 개수가 수 백 개를 상회하기도 한다.First, in step S100, a plurality of access log files generated and accumulated in the target computing device 3 during the log analysis target period are obtained. The plurality of access log files may be obtained by being downloaded from the target computing device 3 to the client device 1 through a network. The access log files typically have a very large size of several gigabytes or more. Also, although it varies depending on the log analysis target period, the number of access log files generated and accumulated by a server providing a commercial service is generally very large, and the number of access log files may exceed several hundred.

단계(S200)에서는, 로그 파일들을 읽어 들일 청크 사이즈가 결정된다. 전술한 바와 같이, 로그 파일들은 수 기가 바이트 이상의 크기를 가지는 것이 일반적이다. 따라서, 제한적인 시스템 자원을 가진 클라이언트 장치(1)에서는 하나의 로그 파일 전체를 한 번에 메모리에 읽어 들여서 처리하기 어려운 경우가 많다. 만약 웹 브라우저(11) 상에서 로그 파일을 분석한다면, 웹 브라우저(11)에서 사용 가능한 메모리 크기의 제한으로 인하여, 로그 파일들로부터 한번에 읽어 들일 수 있는 청크 데이터 사이즈는 더욱 제한된다. 또 한편, 하나의 로그 파일을 너무 작은 단위, 예컨대 하나의 라인 단위로 메모리에 읽어 들일 경우, 지나치가 많은 횟수의 파일 I/O가 발생하여, 전체적인 소요시간을 증가시킨다. 따라서, 분석의 대상이 되는 로그 파일을 고려한 적절한 청크 사이즈, 즉 읽기 단위를 결정하는 것이 중요하다.In step S200, a chunk size from which log files are to be read is determined. As mentioned above, log files generally have a size of several gigabytes or more. Therefore, in the client device 1 having limited system resources, it is often difficult to read and process one log file as a whole into memory at a time. If the log file is analyzed on the web browser 11 , the size of chunk data that can be read from the log files at once is further limited due to the limitation of the memory size available in the web browser 11 . On the other hand, if one log file is read into the memory in a unit that is too small, for example, in units of one line, an excessive number of file I/O occurs, increasing the overall time required. Therefore, it is important to determine an appropriate chunk size, ie, a read unit, in consideration of the log file to be analyzed.

청크 사이즈를 결정함에 있어서는, 최대 가용 메모리 사이즈가 고려된다. 구체적으로, 본 실시예에 따른 액세스 로그 분석 방법이 수행되는 클라이언트 장치(1)에서 최대로 이용 가능한 메모리의 사이즈가 고려된다. 상기 최대 가용 메모리 사이즈는 클라이언트 장치(1)에서 이용 가능한 물리적인 메모리 사이즈의 최대치일 수도 있지만, 클라이언트 장치(1)의 운영체제에서 이용 가능한 메모리 사이즈의 최대치 또는 상기 액세스 로그 분석 방법이 구현된 응용프로그램(예컨대 웹 브라우저)에서 이용 가능한 메모리 사이즈의 최대치일 수 있다.In determining the chunk size, the maximum available memory size is considered. Specifically, the size of the maximum available memory in the client device 1 on which the access log analysis method according to the present embodiment is performed is considered. The maximum available memory size may be the maximum value of the physical memory size available in the client device 1, but the maximum value of the memory size available in the operating system of the client device 1 or the application program ( For example, it may be the maximum amount of memory available in a web browser).

또한, 청크 사이즈를 결정함에 있어서는, 동시에 읽어 들여서 병렬적으로 처리할 액세스 로그 파일의 개수가 고려된다. 전술한 바와 같이, 상용 서비스를 제공하는 서버에서 생성되어 축적되는 액세스 로그 파일들의 개수는 수 백 개를 상회하는 경우가 많으며, 프로세서의 효율적인 활용 및 처리 시간의 단축을 위하여, 복수의 액세스 로그 파일들을 동시에 병렬적으로 처리하는 것이 바람직할 수 있다. 복수의 액세스 로그 파일들을 동시에 병렬적으로 처리할 경우, 병렬적으로 처리되는 각각의 파일들의 처리를 위해, 이용 가능한 메모리 자원이 분배되어야 한다. 예를 들어, 최대 가용 메모리 사이즈가 1GB일 경우, 1GB의 메모리는 병렬적으로 처리되는 액세스 로그 파일을 개수로 나뉘어서, 각각의 로그 파일의 처리에 이용될 수 있다.Also, in determining the chunk size, the number of access log files to be read simultaneously and processed in parallel is considered. As described above, the number of access log files generated and accumulated in the server providing commercial services often exceeds several hundred, and in order to efficiently utilize the processor and reduce processing time, a plurality of access log files It may be desirable to process in parallel at the same time. When a plurality of access log files are simultaneously processed in parallel, available memory resources must be distributed for processing of each file processed in parallel. For example, when the maximum available memory size is 1 GB, 1 GB of memory may be used for processing each log file by dividing the access log files that are processed in parallel by the number.

로그 파일 수number of log files 청크 사이드chunk side 201 이상 1000 이하201 or more and 1000 or less 1MB1 MB 101 이상 200 이하101 or more and 200 or less 5MB5 MB 51 이상 100 이하51 or more and 100 or less 10MB10 MB 1 이상 50 이하1 or more and 50 or less 20MB20 MB

표 1은 최대 가용 메모리 사이즈가 1GB일 경우, 로그 파일의 개수에 기초하여 결정될 수 있는 예시적인 청크 사이즈를 나타낸다. 표 1을 참조하면, 로그 파일의 개수가 1000개를 초과할 경우, 동시에 병렬 처리되는 로그 파일의 개수는 1000개로 설정하고, 청크 사이즈는 1MB로 설정함으로써, 1000개의 파일로부터 1MB의 청크를 읽어 들이는데 필요한 메모리 사이즈의 총합이 1GB를 넘지 않도록 할 수 있다. 표 1을 참조하면, 로그 파일의 개수가 201개 이상 1000개 이하인 경우에는 청크 사이즈는 1MB로 설정될 수 있고, 로그 파일의 개수가 101개 이상 200개 이하인 경우에는 청크 사이즈는 5MB로 설정될 수 있으며, 로그 파일의 개수가 51개 이상 100개 이하인 경우에는 청크 사이즈는 10MB로 설정될 수 있고, 로그 파일의 개수가 1개 이상 50개 이하인 경우에는 청크 사이즈는 20MB로 설정될 수 있다. Table 1 shows exemplary chunk sizes that may be determined based on the number of log files when the maximum available memory size is 1 GB. Referring to Table 1, when the number of log files exceeds 1000, the number of log files that are simultaneously processed in parallel is set to 1000, and the chunk size is set to 1MB, so that 1MB chunks are read from 1000 files. It is possible to ensure that the sum of the memory sizes required for this operation does not exceed 1 GB. Referring to Table 1, if the number of log files is 201 or more and 1000 or less, the chunk size may be set to 1 MB, and if the number of log files is 101 or more and 200 or less, the chunk size may be set to 5 MB. Also, when the number of log files is 51 or more and 100 or less, the chunk size may be set to 10 MB, and when the number of log files is 1 or more and 50 or less, the chunk size may be set to 20 MB.

요컨대, 최대 가용 메모리 사이즈를 동시 처리 대상 로그 파일의 개수로 나눈 값을 초과하지 않도록 청크 사이즈를 결정함으로써, 복수의 로그 파일들로부터 청크를 읽어 들이는데 사용되는 메모리 사이즈의 총합이 최대 가용 메모리 사이즈를 초과하지 않도록 보장할 수 있다. In other words, by determining the chunk size so as not to exceed the value obtained by dividing the maximum available memory size by the number of log files to be processed concurrently, the sum of the memory sizes used to read chunks from a plurality of log files determines the maximum available memory size. can be guaranteed not to exceed.

한편, 청크 사이즈가 일정 사이즈 이상 증가하더라도 더 이상 전체적인 처리 시간이 감소하지 않는 것이 실험의 결과 발견되었다. 도 6은, 청크 사이즈를 변화시키면서 처리 완료 소요 시간(응답 시간)을 조사해 본 결과를 나타낸 그래프이다. 도 6에 도시된 바와 같이, 청크 사이즈가 0MB에서 20MB까지 증가함에 따라 처리 완료 소요 시간 급격하게 감소한다. 이는, 지나치게 작은 청크 사이즈은 지나치게 빈번한 파일 I/O를 발생시키고, 파일 I/O로 인해 지연되는 시간이 전체 소요 시간을 증가시키는 방향으로 작용하기 때문이다. 한편, 청크 사이즈가 20MB를 넘으면, 청크 사이즈가 더 증가하더라도 처리 시간이 줄어드는 정도는 매우 작다는 것을 알 수 있다. 즉, 도 6의 실험 결과에 따르면, 청크 사이즈는 20MB 정도까지 늘리는 것이 바람직하다. 이는, 로그 파일의 수가 단 1개이더라도 최대 가용 메모리 사이즈(예컨대 1GB)를 청크 사이즈로 설정하기 보다는, 20MB를 넘지 않는 크기로 청크 사이즈를 설정하는 것이 바람직하다는 것을 가리킨다. On the other hand, it was found as a result of the experiment that the overall processing time no longer decreased even if the chunk size increased by a certain size or more. 6 is a graph showing the results of examining the processing completion time (response time) while changing the chunk size. As shown in FIG. 6 , as the chunk size increases from 0 MB to 20 MB, the processing completion time decreases rapidly. This is because an excessively small chunk size causes excessively frequent file I/O, and the delay time due to the file I/O acts in a direction to increase the overall required time. On the other hand, if the chunk size exceeds 20 MB, it can be seen that the reduction in processing time is very small even if the chunk size is further increased. That is, according to the experimental results of FIG. 6 , it is preferable to increase the chunk size to about 20 MB. This indicates that, even if the number of log files is only one, it is preferable to set the chunk size to a size not exceeding 20 MB, rather than setting the maximum available memory size (eg, 1 GB) as the chunk size.

다시 도 5를 참조하여 설명한다. 단계(S300)에서는, 단계(S200)에서 결정된 사이즈의 청크 단위로 복수의 액세스 로그 파일들로부터 액세스 로그 데이터가 병렬적으로 판독(read)되며, 단계(S400)에서는 적절한 처리를 거쳐서 액세스 로그가 데이터 구조체에 저장된다. 단계(S300) 및 단계(S400)에 대해서는 도 7 내지 도 9b를 참조하여 보다 자세히 설명한다. It will be described again with reference to FIG. 5 . In step S300, access log data is read in parallel from a plurality of access log files in chunks of the size determined in step S200, and in step S400, the access log data is stored through appropriate processing. stored in a structure. Steps S300 and S400 will be described in more detail with reference to FIGS. 7 to 9B .

도 7은 도 5를 참조하여 설명한 액세스 로그 분석 방법의 일부 단계들을 좀 더 자세히 설명하기 위한 도면이다. FIG. 7 is a diagram for explaining in more detail some steps of the method of analyzing an access log described with reference to FIG. 5 .

도 7을 참조하면, 우선 단계(S310)에서 파일로부터 청크 사이즈만큼의 데이터를 읽어 낸다(read). 단계(S310)은 예를 들어 자바스크립트의 FileReader 객체를 이용하여 구현될 수 있는데, 본 발명이 이에 한정되는 것은 아니다. Referring to FIG. 7 , first, data corresponding to a chunk size is read from the file in step S310 . Step S310 may be implemented using, for example, a FileReader object of JavaScript, but the present invention is not limited thereto.

단계(S320)에서는 단계(S310)에서 읽어낸 청크 데이터로부터 하나의 라인을 획득한다. 단계(S320)는 예를 들어 청크 데이터를 라인 단위로 쪼개어 저장한 배열로부터, 하나의 라인을 획득함으로써 수행될 수 있다. In step S320, one line is acquired from the chunk data read in step S310. Step S320 may be performed, for example, by obtaining one line from an array in which chunk data is divided and stored in line units.

이어서 단계(S400)에서는 하나의 로그 라인을 처리하여 데이터 구조체에 저장한다. 단계(S400)에 대해서는 보다 자세히 후술하기로 한다.Subsequently, in step S400, one log line is processed and stored in a data structure. Step S400 will be described later in more detail.

단계(S330)에서는 청크 데이터의 마지막 라인에 도달했는지 판정한다. 즉, 청크 데이터에 포함된 모든 라인들이 처리 완료되었는지. 만약 마지막 라인에 도달하지 않았다면, 단계(S320)으로 돌아가서 청크 데이터로부터 다음 로그 라인을 획득하고, 단계(S400)에서 이를 처리 및 저장하는 과정을 반복한다. 만약 단계(S330)에서 마지막 라인에 도달하였다고 판정되는 경우, 단계(S340)으로 진행한다. In step S330, it is determined whether the last line of chunk data has been reached. That is, whether all lines included in the chunk data have been processed. If the last line is not reached, the process returns to step S320 to obtain the next log line from the chunk data, and repeats the process of processing and storing it in step S400. If it is determined in step S330 that the last line has been reached, the process proceeds to step S340.

단계(S340)에서는 로그 파일의 마지막 청크에 도달하였는지 판정한다. 다시 말해, 로그 파일의 마지막 부분까지 읽기가 완료되었는지 판정한다. 만약 로그 파일의 마지막 부분까지 읽기가 완료되지 않았다면, 단계(S310)로 돌아가서 청크 사이즈만큼의 새로운 데이터를 파일로부터 읽어 낸다(read). 그리고 새로 읽어낸 청크 데이터로부터 라인 단위로 로그를 읽어내어(단계 S320) 처리 및 저장(단계 S400)하는 과정을 반복한다. 만약 단계(S330)에서 마지막 청크에 도달하였다고 판정되는 경우, 액세스 로그 파일의 분석은 종료된다.In step S340, it is determined whether the last chunk of the log file has been reached. In other words, it is determined whether reading to the last part of the log file has been completed. If reading is not completed until the last part of the log file, the process returns to step S310 and new data corresponding to the chunk size is read from the file. Then, the process of reading the log from the newly read chunk data line by line (step S320), processing and storing (step S400) is repeated. If it is determined in step S330 that the last chunk has been reached, the analysis of the access log file is terminated.

도 8 내지 도 9b는 도 6 및 도 7의 단계(S400)에서 로그 라인을 처리하여 데이터 구조체에 저장하는 과정을 보다 상세히 설명하기 위한 도면이다.8 to 9B are diagrams for explaining in more detail a process of processing and storing log lines in a data structure in step S400 of FIGS. 6 and 7 .

도 9a에 도시된 의사 코드(pseudo code)는, 청크 데이터로부터 각각의 라인을 읽어내어, 통계 분석 등의 후속의 처리를 위해 Map 객체에 저장하는 방법을 나타내는 것이다. 구체적으로, 도 9a를 참조하면, 청크 데이터가 기록된 'text'로부터, 줄바꿈 문자 '\r\n'를 구분자로 하여 각각의 라인을 배열 'lines'에 저장하고. 배열 'lines'을 순회하면서 각각의 로그 라인들('lines[j]')을 Map 객체인 'tpmMap'에 저장한다.The pseudo code shown in FIG. 9A shows a method of reading each line from chunk data and storing it in a Map object for subsequent processing such as statistical analysis. Specifically, referring to FIG. 9A , from 'text' in which chunk data is recorded, each line is stored in an array 'lines' using a newline character '\r\n' as a delimiter. Each log line ('lines[j]') is stored in the Map object 'tpmMap' while traversing the array 'lines'.

그런데 도 9a의 의사 코드와 같이 FileReader.onload 이벤트를 처리하는 코드 내부에서 Map 객체를 사용할 경우, 대용량 다수의 분석 파일로부터 읽어 들인 데이터가 자바스크립트 메모리 공간에서는 사라지나, 실제 물리적인 메모리에는 남아 있게 되는 메모리 누수 현상이 일어나게 된다. 메모리 누수가 지속되면, 상기 코드를 실행하는 응용프로그램(웹 브라우저 등)이 비정상적으로 종료되어, 로그의 분석을 완료하지 못하게 된다.However, when a Map object is used inside the code that processes the FileReader.onload event as in the pseudo code of FIG. 9a, the data read from a large number of analysis files disappears from the JavaScript memory space, but remains in the actual physical memory. A memory leak will occur. If the memory leak continues, the application program (such as a web browser) that executes the code is abnormally terminated, and the analysis of the log cannot be completed.

상기 문제를 해결하기 위해서, FileReader.onload 이벤트를 처리하는 코드 내부에서, 배열 'lines'의 데이터를 Map 객체로 딥 카피(deep copy)하는 것이 바람직하다. 도 8은 배열 'lines'의 데이터를 Map 객체로 딥 카피(deep copy)하는 예시적인 과정을 나타낸 순서도이고, 도 9b는 그 의사 코드이다.In order to solve the above problem, it is preferable to deep copy the data of the array 'lines' into a Map object in the code that processes the FileReader.onload event. 8 is a flowchart illustrating an exemplary process of deep copying data of an array 'lines' into a Map object, and FIG. 9B is a pseudocode thereof.

도 8을 참조하면, 단계(S410)에서 액세스 로그의 하나의 라인이 저장된 제1 자바스크립트 객체를 획득한다. 이는 도 9b의 의사 코드에서, 배열 'lines'을 순회하면서 각각의 로그 라인들('lines[j]')을 얻어내는 부분에 대응된다.Referring to FIG. 8 , in step S410 , a first JavaScript object in which one line of the access log is stored is obtained. This corresponds to a part in the pseudo code of FIG. 9B that obtains each log line ('lines[j]') while traversing the array 'lines'.

단계(S420)에서, 상기 제1 자바 스크립트 객체를 JSON 문자열로 변환한다. 이는 도 9b의 의사 코드에서, 'lines[j]'에 json.stringify 함수를 호출하는 부분에 대응된다.In step S420, the first JavaScript object is converted into a JSON string. This corresponds to the part in which the json.stringify function is called for 'lines[j]' in the pseudo code of FIG. 9B.

단계(S430)에서, 상기 JSON 문자열을 제2 자바 스크립트 객체로 변환한다. 이는 도 9b의 의사 코드에서, 상기 json.stringify 함수의 결과 값에 json.parse 함수를 호출하여, 그 결과를 tpmMap에 할당하는 부분에 대응된다. In step S430, the JSON string is converted into a second JavaScript object. This corresponds to the part of calling the json.parse function on the result value of the json.stringify function in the pseudo code of FIG. 9B and assigning the result to the tpmMap.

도 8에 도시된 단계들을 통하여, 하나의 라인의 로그 데이터가 저장된 객체를 문자열로 변환한 후 그 문자열을 다시 자바 스크립트 객체로 변환함으로써, FileReader.onload 이벤트를 처리하는 코드 내부에서 Map 객체에 할당된 메모리가 누수되는 문제가 해결된다.Through the steps shown in Fig. 8, by converting the object in which the log data of one line is stored into a string and then converting the string back to a JavaScript object, inside the code that processes the FileReader.onload event, it is assigned to the Map object. The memory leak problem is solved.

도 8 내지 도 9b를 참조한 이상의 설명에서는, 설명의 편의를 위해 자바 스크립트 언어로 본 실시예를 구현하는 경우를 가정하여 설명하였지만, 본 발명이 그러한 실시예로 한정되는 것은 아님에 유의한다.In the above description with reference to FIGS. 8 to 9B, it is assumed that the present embodiment is implemented in a JavaScript language for convenience of description, but it should be noted that the present invention is not limited to such an embodiment.

지금까지도 3 내지 도 9b를 참조하여 설명한, 본 발명의 일 실시예에 따른 로그 분석 방법은, 분석 대상 컴퓨팅 장치에서 생성된 대용량 다수의 로그 파일들을, 별도의 분석용 서버에 전송할 필요 없이, 사용자의 로컬 PC 등 클라이언트 장치에서 읽어 내어 분석할 수 있게 한다. The log analysis method according to an embodiment of the present invention, which has been described with reference to FIGS. 3 to 9B so far, does not need to transmit a large number of large-capacity log files generated by an analysis target computing device to a separate analysis server, It can be read and analyzed from a client device such as a local PC.

또한, 본 발명의 일 실시예에 따른 로그 분석 방법은 웹 브라우저에서 실행될 수 있는 자바 스크립터 언어로 구현될 수 있으므로, 호환성이 뛰어나고 번거로운 설치 과정이 불필요하다. In addition, since the log analysis method according to an embodiment of the present invention can be implemented in a Java scripter language that can be executed in a web browser, it has excellent compatibility and does not require a cumbersome installation process.

나아가, 본 발명의 일 실시예에 따른 로그 분석 방법은 동시에 대용량 다수의 로그 파일들을 병렬적으로 메모리 상에 읽어 들여서 처리할 수 있도록 하며, 동시에 처리되는 로그 파일의 개수에 비추어 가장 적절한 읽기 단위(청크 사이즈)를 결정해 줌으로써, 전체적인 처리 소요 시간을 최소화한다. Furthermore, the log analysis method according to an embodiment of the present invention allows a large number of log files to be read into memory in parallel and processed at the same time, and the most appropriate read unit (chunks) in view of the number of log files being processed at the same time. size) to minimize the overall processing time.

또한 본 발명의 일 실시예에 따른 로그 분석 방법은 전술한 이점들을 제공함과 동시에, 딥 카피 방식을 이용함으로써 웹 브라우저에서 대용량의 데이터를 처리하고 저장하는 과정에서 흔히 발생하는 메모리 누수의 문제를 해결한다.In addition, the log analysis method according to an embodiment of the present invention provides the above-described advantages, and at the same time solves the problem of memory leaks that occur frequently in the process of processing and storing large amounts of data in a web browser by using a deep copy method. .

지금까지 도 1 내지 도 9b를 참조하여, 본 발명의 몇몇 실시예들에 따른 컴퓨팅 장치의 성능 측정 방법 및 로그 분석 방법에 대하여 설명하였다. 이하에서는, 본 발명의 몇몇 실시예들에 따른 방법들을 구현할 수 있는 예시적인 컴퓨팅 장치(1500)에 대하여 설명하도록 한다.So far, a method for measuring performance of a computing device and a log analysis method according to some embodiments of the present invention have been described with reference to FIGS. 1 to 9B . Hereinafter, an exemplary computing device 1500 capable of implementing methods according to some embodiments of the present invention will be described.

도 10은 본 발명의 몇몇 실시예들을 구현할 수 있는 예시적인 컴퓨팅 장치(1500)를 나타내는 하드웨어 구성도이다.10 is a hardware configuration diagram illustrating an exemplary computing device 1500 that may implement some embodiments of the present invention.

도 10에 도시된 바와 같이, 컴퓨팅 장치(1500)는 하나 이상의 프로세서(1510), 버스(1550), 통신 인터페이스(1570), 상기 프로세서(1510)에 의하여 수행되는 컴퓨터 프로그램(1591)을 로드(load)하는 메모리(1530)와, 컴퓨터 프로그램(1591)을 저장하는 스토리지(1590)를 포함할 수 있다. 다만, 도 10에는 본 발명의 실시예와 관련 있는 구성 요소들만이 도시되어 있다. 따라서, 본 발명이 속한 기술분야의 통상의 기술자라면 도 10에 도시된 구성요소들 외에 다른 범용적인 구성 요소들이 더 포함될 수 있음을 알 수 있다.10 , the computing device 1500 loads one or more processors 1510 , a bus 1550 , a communication interface 1570 , and a computer program 1591 executed by the processor 1510 . ) may include a memory 1530 and a storage 1590 for storing a computer program 1591 . However, only the components related to the embodiment of the present invention are illustrated in FIG. 10 . Accordingly, a person skilled in the art to which the present invention pertains can see that other general-purpose components other than the components shown in FIG. 10 may be further included.

프로세서(1510)는 컴퓨팅 장치(1500)의 각 구성의 전반적인 동작을 제어한다. 프로세서(1510)는 CPU(Central Processing Unit), MPU(Micro Processor Unit), MCU(Micro Controller Unit), GPU(Graphic Processing Unit) 또는 본 발명의 기술 분야에 잘 알려진 임의의 형태의 프로세서를 포함하여 구성될 수 있다. 또한, 프로세서(1510)는 본 발명의 실시예들에 따른 방법을 실행하기 위한 적어도 하나의 애플리케이션 또는 프로그램에 대한 연산을 수행할 수 있다. 컴퓨팅 장치(1500)는 하나 이상의 프로세서를 구비할 수 있다.The processor 1510 controls the overall operation of each component of the computing device 1500 . The processor 1510 includes a central processing unit (CPU), a micro processor unit (MPU), a micro controller unit (MCU), a graphic processing unit (GPU), or any type of processor well known in the art. can be In addition, the processor 1510 may perform an operation on at least one application or program for executing the method according to the embodiments of the present invention. The computing device 1500 may include one or more processors.

메모리(1530)는 각종 데이터, 명령 및/또는 정보를 저장한다. 메모리(1530)는 본 발명의 실시예들에 따른 방법을 실행하기 위하여 스토리지(1590)로부터 하나 이상의 프로그램(1591)을 로드할 수 있다. 메모리(1530)는 RAM과 같은 휘발성 메모리로 구현될 수 있을 것이나, 본 발명의 기술적 범위가 이에 한정되는 것은 아니다.The memory 1530 stores various data, commands, and/or information. The memory 1530 may load one or more programs 1591 from the storage 1590 to execute a method according to embodiments of the present invention. The memory 1530 may be implemented as a volatile memory such as RAM, but the technical scope of the present invention is not limited thereto.

버스(1550)는 컴퓨팅 장치(1500)의 구성 요소 간 통신 기능을 제공한다. 버스(1550)는 주소 버스(Address Bus), 데이터 버스(Data Bus) 및 제어 버스(Control Bus) 등 다양한 형태의 버스로 구현될 수 있다.The bus 1550 provides communication functions between components of the computing device 1500 . The bus 1550 may be implemented as various types of buses, such as an address bus, a data bus, and a control bus.

통신 인터페이스(1570)는 컴퓨팅 장치(1500)의 유무선 인터넷 통신을 지원한다. 또한, 통신 인터페이스(1570)는 인터넷 통신 외의 다양한 통신 방식을 지원할 수도 있다. 이를 위해, 통신 인터페이스(1570)는 본 발명의 기술 분야에 잘 알려진 통신 모듈을 포함하여 구성될 수 있다.The communication interface 1570 supports wired/wireless Internet communication of the computing device 1500 . Also, the communication interface 1570 may support various communication methods other than Internet communication. To this end, the communication interface 1570 may be configured to include a communication module well-known in the art.

몇몇 실시예들에 따르면, 통신 인터페이스(1570)는 생략될 수도 있다.According to some embodiments, the communication interface 1570 may be omitted.

스토리지(1590)는 상기 하나 이상의 프로그램(1591)과 각종 데이터를 비임시적으로 저장할 수 있다.The storage 1590 may non-temporarily store the one or more programs 1591 and various data.

스토리지(1590)는 ROM(Read Only Memory), EPROM(Erasable Programmable ROM), EEPROM(Electrically Erasable Programmable ROM), 플래시 메모리 등과 같은 비휘발성 메모리, 하드 디스크, 착탈형 디스크, 또는 본 발명이 속하는 기술 분야에서 잘 알려진 임의의 형태의 컴퓨터로 읽을 수 있는 기록 매체를 포함하여 구성될 수 있다.The storage 1590 is a non-volatile memory such as a read only memory (ROM), an erasable programmable ROM (EPROM), an electrically erasable programmable ROM (EEPROM), a flash memory, a hard disk, a removable disk, or well in the art to which the present invention pertains. It may be configured to include any known computer-readable recording medium.

컴퓨터 프로그램(1591)은 메모리(1530)에 로드될 때 프로세서(1510)로 하여금 본 발명의 다양한 실시예에 따른 방법/동작을 수행하도록 하는 하나 이상의 인스트럭션들을 포함할 수 있다. 즉, 프로세서(1510)는 상기 하나 이상의 인스트럭션들을 실행함으로써, 본 발명의 다양한 실시예에 따른 방법/동작들을 수행할 수 있다.The computer program 1591 may include one or more instructions that, when loaded into the memory 1530 , cause the processor 1510 to perform methods/operations in accordance with various embodiments of the present invention. That is, the processor 1510 may perform the methods/operations according to various embodiments of the present disclosure by executing the one or more instructions.

위와 같은 경우, 컴퓨팅 장치(1500)를 통해 본 발명의 몇몇 실시예들에 따른 방법이 구현될 수 있다.In this case, the method according to some embodiments of the present invention may be implemented through the computing device 1500 .

지금까지 도 1 내지 도 10을 참조하여 본 발명의 다양한 실시예들 및 그 실시예들에 따른 효과들을 언급하였다. 본 발명의 기술적 사상에 따른 효과들은 이상에서 언급한 효과들로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 아래의 기재로부터 통상의 기술자에게 명확하게 이해될 수 있을 것이다.So far, various embodiments of the present invention and effects according to the embodiments have been described with reference to FIGS. 1 to 10 . Effects according to the technical spirit of the present invention are not limited to the above-mentioned effects, and other effects not mentioned will be clearly understood by those skilled in the art from the following description.

지금까지 도 1 내지 도 10을 참조하여 설명된 본 발명의 기술적 사상은 컴퓨터가 읽을 수 있는 매체 상에 컴퓨터가 읽을 수 있는 코드로 구현될 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체는, 예를 들어 이동형 기록 매체(CD, DVD, 블루레이 디스크, USB 저장 장치, 이동식 하드 디스크)이거나, 고정식 기록 매체(ROM, RAM, 컴퓨터 구비 형 하드 디스크)일 수 있다. 상기 컴퓨터로 읽을 수 있는 기록 매체에 기록된 상기 컴퓨터 프로그램은 인터넷 등의 네트워크를 통하여 다른 컴퓨팅 장치에 전송되어 상기 다른 컴퓨팅 장치에 설치될 수 있고, 이로써 상기 다른 컴퓨팅 장치에서 사용될 수 있다.The technical ideas of the present invention described with reference to FIGS. 1 to 10 may be implemented as computer-readable codes on a computer-readable medium. The computer-readable recording medium may be, for example, a removable recording medium (CD, DVD, Blu-ray disk, USB storage device, removable hard disk) or a fixed recording medium (ROM, RAM, computer-equipped hard disk). can The computer program recorded in the computer-readable recording medium may be transmitted to another computing device through a network such as the Internet and installed in the other computing device, thereby being used in the other computing device.

이상에서, 본 발명의 실시예를 구성하는 모든 구성 요소들이 하나로 결합되거나 결합되어 동작하는 것으로 설명되었다고 해서, 본 발명의 기술적 사상이 반드시 이러한 실시예에 한정되는 것은 아니다. 즉, 본 발명의 목적 범위 안에서라면, 그 모든 구성요소들이 하나 이상으로 선택적으로 결합하여 동작할 수도 있다.In the above, even if all the components constituting the embodiment of the present invention are described as being combined or operating in combination, the technical spirit of the present invention is not necessarily limited to this embodiment. That is, within the scope of the object of the present invention, all the components may operate by selectively combining one or more.

도면에서 동작들이 특정한 순서로 도시되어 있지만, 반드시 동작들이 도시된 특정한 순서로 또는 순차적 순서로 실행되어야만 하거나 또는 모든 도시 된 동작들이 실행되어야만 원하는 결과를 얻을 수 있는 것으로 이해되어서는 안 된다. 특정 상황에서는, 멀티태스킹 및 병렬 처리가 유리할 수도 있다. 더욱이, 위에 설명한 실시예들에서 다양한 구성들의 분리는 그러한 분리가 반드시 필요한 것으로 이해되어서는 안 되고, 설명된 프로그램 컴포넌트들 및 시스템들은 일반적으로 단일 소프트웨어 제품으로 함께 통합되거나 다수의 소프트웨어 제품으로 패키지 될 수 있음을 이해하여야 한다.Although acts are shown in a specific order in the drawings, it should not be understood that the acts must be performed in the specific order or sequential order shown, or that all shown acts must be performed to obtain a desired result. In certain circumstances, multitasking and parallel processing may be advantageous. Moreover, the separation of the various components in the embodiments described above should not be construed as necessarily requiring such separation, and the described program components and systems may generally be integrated together into a single software product or packaged into multiple software products. It should be understood that there is

이상 첨부된 도면을 참조하여 본 발명의 실시예들을 설명하였지만, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 본 발명이 다른 구체적인 형태로도 실시될 수 있다는 것을 이해할 수 있다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적인 것이 아닌 것으로 이해해야만 한다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 동등한 범위 내에 있는 모든 기술 사상은 본 발명에 의해 정의되는 기술적 사상의 권리범위에 포함되는 것으로 해석되어야 할 것이다.Although embodiments of the present invention have been described with reference to the accompanying drawings, those of ordinary skill in the art to which the present invention pertains can practice the present invention in other specific forms without changing the technical spirit or essential features. can understand that there is Therefore, it should be understood that the embodiments described above are illustrative in all respects and not restrictive. The protection scope of the present invention should be interpreted by the claims below, and all technical ideas within the equivalent range should be interpreted as being included in the scope of the technical ideas defined by the present invention.

Claims (13)

컴퓨팅 장치에 의해 로그를 분석하는 방법으로서,
복수의 로그 파일들을 획득하는 단계;
상기 복수의 파일들 각각으로부터 데이터를 읽어 들이기 위한 단위인 청크 사이즈를 결정하는 단계;
상기 복수의 파일들로부터 상기 청크 단위로 상기 로그를 읽어 들이되, 상기 복수의 파일들 중 적어도 일부를 병렬적으로 읽어 들이는 단계; 및
상기 로그를 데이터 구조체에 저장하는 단계
를 포함하는,
로그 분석 방법.
A method of analyzing a log by a computing device, comprising:
obtaining a plurality of log files;
determining a chunk size, which is a unit for reading data from each of the plurality of files;
reading the log from the plurality of files in the chunk unit, and reading at least some of the plurality of files in parallel; and
storing the log in a data structure
containing,
Log analysis method.
제1항에 있어서,
상기 청크 사이즈를 결정하는 단계는,
최대 가용 메모리 사이즈에 기초하여 상기 청크 사이즈를 결정하는 단계
를 포함하는,
로그 분석 방법.
According to claim 1,
The step of determining the chunk size includes:
determining the chunk size based on a maximum available memory size;
containing,
Log analysis method.
제2항에 있어서,
상기 청크 사이즈를 결정하는 단계는,
상기 최대 가용 메모리 사이즈를 상기 복수의 로그 파일들의 개수로 나눈 값에 기초하여, 상기 청크 사이즈를 결정하는 단계
를 포함하는,
로그 분석 방법.
3. The method of claim 2,
The step of determining the chunk size includes:
determining the chunk size based on a value obtained by dividing the maximum available memory size by the number of the plurality of log files
containing,
Log analysis method.
제3항에 있어서,
상기 청크 사이즈는 20MB 이하로 결정되는,
로그 분석 방법.
4. The method of claim 3,
The chunk size is determined to be 20 MB or less,
Log analysis method.
제4항에 있어서,
상기 최대 가용 메모리 사이즈가 1GB일 경우,
상기 로그 파일들의 개수가 1 이상 50 이하일 때, 상기 청크 사이즈는 20MB이고,
상기 로그 파일들의 개수가 51 이상 100 이하일 때, 상기 청크 사이즈는 10MB이고,
상기 로그 파일들의 개수가 101 이상 200 이하일 때, 상기 청크 사이즈는 5MB이고,
상기 로그 파일들의 개수가 201 이상일 때, 상기 청크 사이즈는 1MB인,
로그 분석 방법.
5. The method of claim 4,
If the maximum available memory size is 1 GB,
When the number of log files is 1 or more and 50 or less, the chunk size is 20 MB,
When the number of log files is greater than or equal to 51 and less than or equal to 100, the chunk size is 10 MB,
When the number of log files is 101 or more and 200 or less, the chunk size is 5 MB,
When the number of the log files is 201 or more, the chunk size is 1 MB,
Log analysis method.
제1항에 있어서,
상기 로그를 데이터 구조체에 저장하는 단계는,
상기 청크 단위로 읽어 들인 상기 로그의 각각의 라인을 딥 카피(deep copy)하여 상기 데이터 구조체에 저장하는 단계를 포함하는,
로그 분석 방법.
According to claim 1,
Storing the log in a data structure comprises:
Deep copying each line of the log read in the chunk unit and storing it in the data structure,
Log analysis method.
제6항에 있어서,
상기 각각의 라인을 딥 카피하여 상기 데이터 구조체에 저장하는 단계는,
상기 로그의 하나의 라인이 저장된 제1 자바스크립트 객체를 획득하는 단계;
상기 제1 자바스크립트 객체를 JSON 문자열로 변환하는 단계; 및
상기 JSON 문자열을 제2 자바스크립트 객체로 변환하는 단계
를 포함하는,
로그 분석 방법.
7. The method of claim 6,
Deep copying each line and storing it in the data structure comprises:
obtaining a first JavaScript object in which one line of the log is stored;
converting the first JavaScript object into a JSON string; and
converting the JSON string into a second JavaScript object
containing,
Log analysis method.
제7항에 있어서,
상기 제1 자바스크립트 객체를 상기 JSON 문자열로 변환하는 단계는 JSON.stringify 함수를 호출하는 단계를 포함하는,
로그 분석 방법.
8. The method of claim 7,
Converting the first JavaScript object to the JSON string comprises calling a JSON.stringify function,
Log analysis method.
제7항에 있어서,
상기 JSON 문자열을 상기 제2 자바스크립트 객체로 변환하는 단계는 JSON.parse 함수를 호출하는 단계를 포함하는,
로그 분석 방법.
8. The method of claim 7,
converting the JSON string into the second JavaScript object includes calling a JSON.parse function,
Log analysis method.
제1항에 있어서,
상기 로그를 분석하는 방법에 포함된 각 단계들은, 상기 컴퓨팅 장치에서 실행되는 브라우저에 의해 수행되는 것인,
로그 분석 방법.
According to claim 1,
Each step included in the method of analyzing the log is performed by a browser running on the computing device,
Log analysis method.
제1항에 있어서,
상기 로그를 분석하는 방법에 포함된 각 단계들은, 외부 장치와의 통신 없이 상기 컴퓨팅 장치에 의해 수행되는 것인,
로그 분석 방법.
According to claim 1,
Each step included in the method of analyzing the log is performed by the computing device without communication with an external device,
Log analysis method.
컴퓨팅 장치의 성능을 측정하는 방법으로서,
대상 컴퓨팅 장치의 로그를 분석하는 단계;
상기 로그 분석 결과에 기초하여 테스트 스크립트를 자동으로 생성하는 단계;
상기 테스트 스크립트를 실행하여 상기 대상 컴퓨팅 장치의 성능을 테스트하는 단계; 및
상기 테스트 수행 결과를 디스플레이하는 단계
를 포함하되,
상기 로그를 분석하는 단계는,
상기 대상 컴퓨팅 장치의 복수의 로그 파일들을 획득하는 단계;
상기 복수의 파일들 각각으로부터 데이터를 읽어 들이기 위한 단위인 청크 사이즈를 결정하는 단계;
상기 복수의 파일들로부터 상기 청크 단위로 상기 로그를 읽어 들이되, 상기 복수의 파일들 중 적어도 일부를 병렬적으로 읽어 들이는 단계; 및
상기 로그를 데이터 구조체에 저장하는 단계
를 포함하는,
컴퓨팅 장치의 성능 측정 방법.
A method of measuring the performance of a computing device, comprising:
analyzing the log of the target computing device;
automatically generating a test script based on the log analysis result;
testing the performance of the target computing device by executing the test script; and
displaying the test execution result
including,
The step of analyzing the log is,
acquiring a plurality of log files of the target computing device;
determining a chunk size, which is a unit for reading data from each of the plurality of files;
reading the log from the plurality of files in the chunk unit, and reading at least some of the plurality of files in parallel; and
storing the log in a data structure
containing,
A method of measuring the performance of a computing device.
컴퓨터로 하여금 제1항 내지 제12항 중 어느 한 항의 방법을 수행하도록 하는 컴퓨터 프로그램이 저장된, 컴퓨터 판독 가능한 비일시적 기록 매체.A computer program for causing a computer to perform the method of any one of claims 1 to 12 stored therein, a computer-readable non-transitory recording medium.
KR1020200061423A 2020-05-22 2020-05-22 Method for measuring performance of computing device Pending KR20210144287A (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200061423A KR20210144287A (en) 2020-05-22 2020-05-22 Method for measuring performance of computing device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200061423A KR20210144287A (en) 2020-05-22 2020-05-22 Method for measuring performance of computing device

Publications (1)

Publication Number Publication Date
KR20210144287A true KR20210144287A (en) 2021-11-30

Family

ID=78722437

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200061423A Pending KR20210144287A (en) 2020-05-22 2020-05-22 Method for measuring performance of computing device

Country Status (1)

Country Link
KR (1) KR20210144287A (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102657160B1 (en) * 2023-07-04 2024-04-15 인스피언 주식회사 Data management device, data management method and a computer-readable storage medium for storing data management program

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101553923B1 (en) 2012-09-24 2015-09-18 삼성에스디에스 주식회사 Apparatus and method for analyzing system usage

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101553923B1 (en) 2012-09-24 2015-09-18 삼성에스디에스 주식회사 Apparatus and method for analyzing system usage

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102657160B1 (en) * 2023-07-04 2024-04-15 인스피언 주식회사 Data management device, data management method and a computer-readable storage medium for storing data management program

Similar Documents

Publication Publication Date Title
CN111124850A (en) MQTT server performance testing method, system, computer equipment and storage medium
US10599558B1 (en) System and method for identifying inputs to trigger software bugs
CN107704369B (en) Operation log recording method, electronic device, storage medium and system
US20160124795A1 (en) Evaluation method and apparatus
WO2019075994A1 (en) Method, device and system for mock data at ios end, and storage medium
CN111274512A (en) Page loading method, device and medium
CN108228443B (en) Web application testing method and device
CN111324545B (en) Application server middleware performance test method, test terminal and application server
US10963364B2 (en) Analysis system, analysis method and program
KR20210144287A (en) Method for measuring performance of computing device
US10382311B2 (en) Benchmarking servers based on production data
CN110753121A (en) Mirror image warehouse deployment method, device, equipment and medium
US8539461B2 (en) Method for identifying memory of virtual machine and computer system thereof
CN111949504A (en) Pressure testing method, device and medium
CN110955449A (en) Method and device for releasing gray scale of client
CN114356289B (en) A multi-platform shader usage method and related device
CN110753136B (en) Domain name resolution method, device, equipment and storage medium
CN116881161A (en) Software testing method, system, device and electronic equipment
US9940068B2 (en) Device and method for determining memory leaks
CN115269347A (en) A storage performance testing method, device, medium and electronic equipment
KR102745736B1 (en) Method for collecting data and system for performing the same
US7870543B2 (en) Dynamic tuning of user-space process
CN107229564B (en) Pressure simulation method and device
WO2023065861A1 (en) Application migration assessment
CN114218060A (en) Performance test method and device of terminal equipment

Legal Events

Date Code Title Description
PA0109 Patent application

St.27 status event code: A-0-1-A10-A12-nap-PA0109

PG1501 Laying open of application

St.27 status event code: A-1-1-Q10-Q12-nap-PG1501

A201 Request for examination
PA0201 Request for examination

St.27 status event code: A-1-2-D10-D11-exm-PA0201

E902 Notification of reason for refusal
PE0902 Notice of grounds for rejection

St.27 status event code: A-1-2-D10-D21-exm-PE0902

P11-X000 Amendment of application requested

St.27 status event code: A-2-2-P10-P11-nap-X000

P13-X000 Application amended

St.27 status event code: A-2-2-P10-P13-nap-X000