그래서 비슷한 벤치 마크를 던지고 싶었습니다. 트위터 부트 스트랩 예제 페이지를 가져 와서 xhtml 엄격으로 변환했습니다. 그런 다음 Hello, World를 반환하는 ApplicationScoped CDI Bean을 정확히 하나만 설정했습니다. EL 표현식을 페이지에 넣었습니다. JSF 버전의 경우 JSF 리소스 핸들러를 사용하고 JSPX 버전의 경우 HTML 스타일 css 및 js 포함을 사용했습니다.
아파치 벤치를 사용하여 메인 페이지 로딩 시간을 테스트했습니다. 테스트는 최적화되지 않은 TomEE + v1.5.2 서버에서 수행되었습니다. 각 벤치 마크를 5 배로 실행 한 다음 측정하기 전에 전체 GC를 실행했습니다. Bost 테스트는 JVM을 다시 시작하지 않고 동일한 JVM 인스턴스에서 수행되었습니다. libpath에서 APR을 사용할 수 있지만 이것이이 테스트에 영향을 미치는지 확실하지 않습니다.
우리가 매우 적은 양을 다루기 때문에 JSF는 느리지 만 많은 것이 아닙니다. 무엇입니까 없는 페이지가 더 복잡해으로 증명하는 것은, 선형 또는 기하 급수적으로 JSF / JSPX 스케일을 수행합니다.
내가 주목 한 것은 JSPX가 JSF에 비해 쓰레기를 거의 생산하지 않는다는 것입니다. JSPX 페이지에서 벤치 마크를 실행하면 사용한 힙이 184mb에서 237mb로 이동했습니다. JSF 페이지의 동일한 JVM에서 벤치 마크를 실행하면 사용 된 힙이 108mb에서 404mb 이상으로 이동하지만 자동 가비지 콜렉션이 시작됩니다. JSF에 대한 가비지 수집기를 조정하는 것이 절대적으로 필요한 것 같습니다 .
JSF
jonfisher@peanut:~$ /usr/local/bin/ab -n 10000 -c 100 http://localhost:8080/cdi-jsp/index.jsf
This is ApacheBench, Version 2.3 <$Revision: 1373084 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: Apache-Coyote/1.1
Server Hostname: localhost
Server Port: 8080
Document Path: /cdi-jsp/index.jsf
Document Length: 2904 bytes
Concurrency Level: 100
Time taken for tests: 2.138 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 32160000 bytes
HTML transferred: 29040000 bytes
Requests per second: 4677.27 [#/sec] (mean)
Time per request: 21.380 [ms] (mean)
Time per request: 0.214 [ms] (mean, across all concurrent requests)
Transfer rate: 14689.55 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 1 1.3 1 21
Processing: 1 20 9.0 18 63
Waiting: 1 19 8.8 17 62
Total: 2 21 8.8 20 64
Percentage of the requests served within a certain time (ms)
50% 20
66% 23
75% 25
80% 27
90% 32
95% 39
98% 46
99% 50
100% 64 (longest request)
JSPX
jonfisher@peanut:~$ /usr/local/bin/ab -n 10000 -c 100 http://localhost:8080/cdi-jsp/page2.jspx
This is ApacheBench, Version 2.3 <$Revision: 1373084 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking localhost (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests
Server Software: Apache-Coyote/1.1
Server Hostname: localhost
Server Port: 8080
Document Path: /cdi-jsp/page2.jspx
Document Length: 2440 bytes
Concurrency Level: 100
Time taken for tests: 1.273 seconds
Complete requests: 10000
Failed requests: 0
Write errors: 0
Total transferred: 26290000 bytes
HTML transferred: 24400000 bytes
Requests per second: 7856.63 [#/sec] (mean)
Time per request: 12.728 [ms] (mean)
Time per request: 0.127 [ms] (mean, across all concurrent requests)
Transfer rate: 20170.98 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 5 2.3 6 20
Processing: 1 8 4.6 6 40
Waiting: 1 8 4.3 6 40
Total: 2 13 3.8 12 41
Percentage of the requests served within a certain time (ms)
50% 12
66% 12
75% 13
80% 13
90% 17
95% 20
98% 24
99% 28
100% 41 (longest request)