Fn Project의 서버에 UI를 붙이고 ab (Apache Bench)로 쉽게 벤치 마크를 실행해보십시오

6882 단어 f우이아 B

개요



이 항목에서는 다른 항목 "OCI의 Micro Instance에서 CentOS에 Fn Project 서버를 설치해보십시오."에서 도입한 Fn Project의 서버에 이 프로젝트를 위해 만들어진 UI을 연결합니다. 또한 ab (Apache Bench) 명령을 사용하여 쉽게 벤치 마크를 실행해보십시오.

가정 독자


  • Fn Project 용 UI에 관심이있는 분

  • 준비



    UI for Fn Project



    Fn 프로젝트에는 사용자 인터페이스를 개발하는 프로젝트 하위 프로젝트가 있습니다.

    Docker 이미지를 사용하여 UI를 시작합니다.

    다음을 전제로 합니다.
  • Docker의 최신 (2020 년 현재 새로운 버전) 버전 사용 가능
  • fn server가 다른 항목의 방법으로 Docker를 사용하여 시작되었습니다
  • fn server에서 부팅 포트를 지정한 경우에는 그 내용을 삼가
  • 포트 포워딩이 구성되었습니다. fn server가 움직이는 호스트의 포트 4000번에서 로컬로 작업하고 있는 PC의 포트 4000번으로.

  • 사이트 기재 참조하여 컨테이너를 시작합니다.
    $  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는 다음과 같은 점에서 유용했습니다.
  • 쉽게 부팅 가능
  • 실행중인 컨테이너의 수를 그래프로 확실히 알 수 있습니다
  • 요청한 횟수를 그래프로 분명히 알 수 있습니다
  • UI에서 함수를 두드려 볼 수 있습니다

  • 다음 목적으로 2020년 2월 현재 기능이 없습니다.
  • 위의 세부 메트릭을 UI에서 확인
  • 좋은 웹페이지 즐겨찾기