<div dir="ltr">Hello All,<br><br>I have been looking at Seam 2.1 performance and begun profiling the wiki example.&nbsp; Below are my initial findings.&nbsp; More will follow but I wanted to provide some base information that we look at and compare with changes that we make. <br>
<br>Environment<br>------------------------------<br>All tests were executed on my laptop (specs provide below).<br>&nbsp;<br>* Lenovo T61<br>&nbsp; - 2GB Ram<br>&nbsp; - Intel(R) Core(TM)2 Duo CPU&nbsp;&nbsp;&nbsp;&nbsp; T7500&nbsp; @ 2.20GHz<br>&nbsp; - 7200RPM 200GB Hard drive<br>
&nbsp; - Fedora 8 with all updates as of 9-22-09<br>&nbsp; - MySQL 5.0.45<br>&nbsp; - Sun jdk1.5.0_14<br>&nbsp; - JBoss AS <a href="http://4.2.3.GA">4.2.3.GA</a><br><br>* Test tools<br>&nbsp; - jmeter 2.3.2<br>&nbsp; - jprofiler 5.12<br><br>Test Description<br>
-----------------------------<br>* Tests were all done with the wiki example<br>&nbsp; - svn trunk (rev 9017)<br>&nbsp; - deployed following the production deployment instructions<br>&nbsp;&nbsp;&nbsp; - plus addition mysql instructions from Christian<br>
&nbsp; - MySQL primed with the live <a href="http://seamframework.org">seamframework.org</a> data as of July 30th.<br>* Between all tests<br>&nbsp; - AS server and test applications were restarted<br>&nbsp; - 3 page hits were conducted prior to load tests to prime system<br>
* The tests described here were all focused on the first page of the users forum<br>&nbsp; - <a href="http://localhost:8080/Community/SeamUsers">http://localhost:8080/Community/SeamUsers</a><br><br>Multi User Load Test Results<br>
----------------------------<br>* These tests were primarily to provide a base line of performance for comparison. &nbsp;<br>&nbsp; - profiling was not done as part of these tests <br>&nbsp; - result times are averages of the runs completed<br>
<br>JBoss AS 4.2.3 as is<br>---------------------<br>25 users x 25 requests each<br>&nbsp;- Average request time 8.85 sec<br>&nbsp;- Median request time&nbsp;&nbsp; 8.22 sec<br>&nbsp;- Throughput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 131.4 per min<br>&nbsp;- notes: &nbsp;<br>&nbsp;&nbsp;&nbsp; - server.log was 1.2 GB<br>
&nbsp;&nbsp;&nbsp; - See jboss_423_base_25u.png&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br><br>50 users x 25 requests each<br>&nbsp;- Average request time 22.72 sec<br>&nbsp;- Median request time&nbsp;&nbsp; 18.33 sec<br>&nbsp;- Throughput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 96 per min<br>&nbsp;- notes: &nbsp;<br>&nbsp;&nbsp;&nbsp; - server.log is 2.4 GB<br>
&nbsp;&nbsp;&nbsp; - this pushed my machine to its limit<br>&nbsp;&nbsp;&nbsp; - the final 10-15 threads would appear to freeze<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - but would finish fine (except for 1 of the runs)<br>&nbsp;&nbsp;&nbsp; - See jboss_423_base_50u.png<br><br>Notes: Obviously the biggest issue here was logging I reduced all logging to INFO by modifying the jboss-log4j.xml file and setting root logging level and adjusting one other category.&nbsp; The results were dramatic as seen below.<br>
<br>JBoss AS 4.2.3 with reduced logging<br>------------------------------------<br>25 users x 25 requests each<br>&nbsp;- Average request time 3.08 sec<br>&nbsp;- Median request time&nbsp;&nbsp; 2.94 sec<br>&nbsp;- Throughput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 283.5 per min<br>
&nbsp;- notes: &nbsp;<br>&nbsp;&nbsp;&nbsp; - server.log was 87.6 KB<br>&nbsp;&nbsp;&nbsp; - See jboss_423_rd_log_25u.png<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>50 users x 25 requests each<br>&nbsp;- Average request time 10.10 sec<br>&nbsp;- Median request time &nbsp; 9.30 sec<br>&nbsp;- Throughput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;&nbsp; 237.6 per min<br>
&nbsp;- notes: &nbsp;<br>&nbsp;&nbsp;&nbsp; - server.log is 96 KB<br>&nbsp;&nbsp;&nbsp; - all thread completed correctly and without issue.<br>&nbsp;&nbsp;&nbsp; - See jboss_423_rd_log_50u.png<br><br>1 user x 1000 requests<br>&nbsp;- wanted to get sample with just one user and many requests<br>
&nbsp;- Average request time 264 ms<br>&nbsp;- Median request time&nbsp;&nbsp; 255 ms<br>&nbsp;- Throughput&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 255.5 per min<br>&nbsp;- notes: &nbsp;<br>&nbsp;&nbsp;&nbsp; - server.log is 79 KB<br>&nbsp;&nbsp;&nbsp; - Very tight deviation only 42 ms as expected<br><br>Notes: Obviously this is the configuration that I will use for the profiling tests to follow, and for comparison runs based on changes made to the code. &nbsp;<br>
<br>I have begun profiling runs of the 25 user tests through JProfiler to identify where threads are blocking and tracking down areas for improvements.&nbsp; These tests with the profiler truly push my machine to the limit, but I am see some results.&nbsp; I will be writing a follow up email with at least some of that information soon - possibly today.<br>
<br>Regards,<br>Jay<br><br>-- <br>blog: <a href="http://in.relation.to/Bloggers/Jay">http://in.relation.to/Bloggers/Jay</a><br><br></div>