Fn Project의 서버에 UI를 붙이고 ab (Apache Bench)로 쉽게 벤치 마크를 실행해보십시오
개요
이 항목에서는 다른 항목 "OCI의 Micro Instance에서 CentOS에 Fn Project 서버를 설치해보십시오."에서 도입한 Fn Project의 서버에 이 프로젝트를 위해 만들어진 UI을 연결합니다. 또한 ab (Apache Bench) 명령을 사용하여 쉽게 벤치 마크를 실행해보십시오.
가정 독자
준비
UI for Fn Project
Fn 프로젝트에는 사용자 인터페이스를 개발하는 프로젝트 하위 프로젝트가 있습니다.
Docker 이미지를 사용하여 UI를 시작합니다.
다음을 전제로 합니다.
사이트 기재 참조하여 컨테이너를 시작합니다.
$ docker run -it --rm --link fnserver -p 4000:4000 -e "FN_API_URL=http://fnserver:8080" fnproject/ui
> [email protected] start /app
> node server
WARNING: NODE_ENV value of 'production' did match any deployment config file names.
WARNING: See https://github.com/lorenwest/node-config/wiki/Strict-Mode
info: Using API url: fnserver:8080
info: Server running on port 4000
브라우저에서 "http://localhost:4000"을 열고 톱 화면에서 다른 엔트리로 만든 앱 "calc-fn-app"를 선택하면 아래 그림과 같은 화면을 볼 수 있습니다.
ab(Apache Bench)
ab(Apache Bench) 커멘드는, Apache Web 서버의 주변 툴로서 개발되어 온 것으로, 커멘드 라인으로부터 벤치마크 테스트를 실시할 수 있는 것입니다.
쉽게 움직일 수 있도록 필자는 API를 쓸 때 우선 부하를 걸어 용신을 할 때 등에도 편리합니다.
필자가 이 항목에서 사용하는 CentOS7에서는 "httpd-tools"패키지에 저장되며 Apache 자체를 설치하지 않고도 도구만 사용할 수 있습니다.
다음과 같이 설치합니다.
sudo yum install -y httpd-tools
부하를 걸어 본다
다른 항목 "Fn Project를 사용하여 JavaScript로 작성한 function을 움직여보십시오."으로 만든 API는 JSON에서 매개 변수를 POST하고 결과를 JSON으로 반환하는 인터페이스를 가지고 있습니다.
먼저 다음과 같은 JSON 파일을 준비합니다.
{
"left":"1",
"right":"2"
}
이 JSON 파일을 사용하여 다음과 같이 ab 명령을 실행합니다. 여기에 IP 주소: 여기에 포트 부분에는 Fn server의 주소와 포트를 지정합니다.
ab -n 1000 -c 1 -p ./p.json -T "application/json; charset=utf-8" "http://ここにIPアドレス:ここにポート/t/calc-fn-app/plus"
ab명령의 옵션으로서 「-n 1000」으로 1000회의 리퀘스트를 「-c 1」로 동시 액세스수 1을 각각 지정하고 있습니다.
$ ab -n 1000 -c 1 -p ./p.json -T "application/json; charset=utf-8" "http://ここにIPアドレス:ここにポート/t/calc-fn-app/plus"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ここにIPアドレス (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:
Server Hostname: ここにIPアドレス
Server Port: ここにポート
Document Path: /t/calc-fn-app/plus
Document Length: 14 bytes
Concurrency Level: 1
Time taken for tests: 4.393 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 162000 bytes
Total body sent: 203000
HTML transferred: 14000 bytes
Requests per second: 227.62 [#/sec] (mean)
Time per request: 4.393 [ms] (mean)
Time per request: 4.393 [ms] (mean, across all concurrent requests)
Transfer rate: 36.01 [Kbytes/sec] received
45.12 kb/s sent
81.13 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.0 0 14
Processing: 1 4 41.6 2 1317
Waiting: 0 3 41.6 1 1317
Total: 1 4 41.7 2 1317
WARNING: The median and mean for the initial connection time are not within a normal deviation
These results are probably not that reliable.
Percentage of the requests served within a certain time (ms)
50% 2
66% 3
75% 3
80% 3
90% 5
95% 7
98% 11
99% 16
100% 1317 (longest request)
[
결과를 보면 거의 모든 요청이 20ms 이하, 90%가 5msec 이하로 응답이 반환되고 있습니다.
1317ms라는 큰 값이 있지만, 이것은 Fn Project에서 아이들 상태에서 컨테이너가 하나도 시작되지 않은 상태에서 컨테이너가 시작하는 시간을 포함하는 것으로 생각됩니다.
시간을 두지 않고 두 번째를 실행하면 longest request는 30ms입니다.
결론
이 항목에서는 Fn Project의 서버에 UI를 붙이고 ab (Apache Bench)에서 쉽게 벤치 마크를 실행해 보았습니다.
Fn Project의 하위 프로젝트 UI는 다음과 같은 점에서 유용했습니다.
{
"left":"1",
"right":"2"
}
ab -n 1000 -c 1 -p ./p.json -T "application/json; charset=utf-8" "http://ここにIPアドレス:ここにポート/t/calc-fn-app/plus"
$ ab -n 1000 -c 1 -p ./p.json -T "application/json; charset=utf-8" "http://ここにIPアドレス:ここにポート/t/calc-fn-app/plus"
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking ここにIPアドレス (be patient)
Completed 100 requests
Completed 200 requests
Completed 300 requests
Completed 400 requests
Completed 500 requests
Completed 600 requests
Completed 700 requests
Completed 800 requests
Completed 900 requests
Completed 1000 requests
Finished 1000 requests
Server Software:
Server Hostname: ここにIPアドレス
Server Port: ここにポート
Document Path: /t/calc-fn-app/plus
Document Length: 14 bytes
Concurrency Level: 1
Time taken for tests: 4.393 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 162000 bytes
Total body sent: 203000
HTML transferred: 14000 bytes
Requests per second: 227.62 [#/sec] (mean)
Time per request: 4.393 [ms] (mean)
Time per request: 4.393 [ms] (mean, across all concurrent requests)
Transfer rate: 36.01 [Kbytes/sec] received
45.12 kb/s sent
81.13 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.0 0 14
Processing: 1 4 41.6 2 1317
Waiting: 0 3 41.6 1 1317
Total: 1 4 41.7 2 1317
WARNING: The median and mean for the initial connection time are not within a normal deviation
These results are probably not that reliable.
Percentage of the requests served within a certain time (ms)
50% 2
66% 3
75% 3
80% 3
90% 5
95% 7
98% 11
99% 16
100% 1317 (longest request)
[
이 항목에서는 Fn Project의 서버에 UI를 붙이고 ab (Apache Bench)에서 쉽게 벤치 마크를 실행해 보았습니다.
Fn Project의 하위 프로젝트 UI는 다음과 같은 점에서 유용했습니다.
다음 목적으로 2020년 2월 현재 기능이 없습니다.
Reference
이 문제에 관하여(Fn Project의 서버에 UI를 붙이고 ab (Apache Bench)로 쉽게 벤치 마크를 실행해보십시오), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hrkt/items/a39f275121cf53c7779f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)