Node .js powered freenas web server , created with the NoFlo flowbased programming device and visualized with jsPlumb . overall performance isn’t poor , either:Feeling like my hardware wasn’t Becoming utilized to the full extent of its capabilities , I made a decision to benchmark the most successful web servers from my prior trials in a various environment . This time , Nevertheless , I’d use a lot more employees , to see if there are significant overall performance gains and view storage usage .Different versions of Ruby were also taken into account . As you’ve most likely guessed , I’m benchmarking the application in Ruby 1 .8 and Ruby one .9 .SetupThe setup was quite easy . Nginx (0 .7 .64) was utilized in all the tests . The remaining components’ variations were: Thin (1 .2 .7) Unicorn (0 .97 .0) Passenger (2 .2 .11)Nginx was acting as a proxy balancer and main server for Thin/Unicorn and Passenger , respectively . At first , 30 workers were utilized . In the Subsequent round , the amount of workers was increased to 60 .The Ruby variations utilized were 1 .8 .7 (patchlevel 249) and 1 .9 .1 (patchlevel 376) , compiled from source with the exact same flags: "O2 march=nocona pipe" .TestAn awesome device called autobench was used for this benchmark . While being excellent a excellent device , ab lacks some of the current functions in httperf . Autobench , dependent on httperf , allows to perform a lot more complex benchmarks and acquire useful results .This specific Check aimed and discovering how much requests every second could the web server handle for every ınternet page . Autobench would calibrate httperf to Attempt to get a lot more and more juice out of the application till it reached a bottleneck . After that it would Attempt to stabilize the amount of requests per second at the higher degree the system could handle .Memory usage of all the involved elements , in every Check , was also recorded utilizing the information in /proc/pid/status .For this ride , three webpages of escolinhas had been utilized . The most visited one , the heaviest a single and the lightest one . I’ll allow you figure out which a single is which .An essential facet note is that a request needs to be completed in less than 30 seconds to be considered valid . If the reply only comes 32 seconds after , it is considered a failed request .ConfigurationEach freenas web server setup experienced a similar configuration . The important sections were as follows: Thin Unicorn PassengerWhen you see [30|60] , it is obviously associated to the varying amount of employees . Nginx had a pretty Regular configuration for all the tests .All tests were ran on Gentoo Linux , with a tweaked sysctl to permit a greater throughput .ResultsThe results of Ruby 1 .8 .7 are shown , Shifting on to Ruby 1 .9 .1 . Lastly , a short analysis on memory usage is presented .Ruby 1 .8 . with Ruby 1 .8 .7 , the outcomes were as follows .Page 1 Ruby 1 . you’ve most likely guessed , this is the heaviest Web page . Autobench was unable to discover a stable point on this Web page , it’s Merely as well heavy to be persistently being requested . Anyway , all ınternet servers behaved similarly , being able to dispatch a couple of .5 requests in the very first iteration but completely suffocating Right after that .Page a couple of Ruby 1 . time every setup was capable to persistently serve the ınternet Web page , being able to serve 10~12 requests per second . Although each ınternet server overall performance is very comparable , we can see than Unicorn (with 60 workers) tends to take the lead .Page three Ruby one . , all setups carry out similarly . Unicorn (with sixty workers) appears to also consider the lead on this a single , although by an insignificant margin .Ruby 1 .9 . these tests , the configuration was transformed to use Ruby one .9 .1 . Let’s see how it stacks up .Page 1 Ruby one . . I mean WOW . Switching the Ruby edition increased the number of responding cycles to 15~16 . The typical handled requests per also experienced a large boost . I currently knew that Ruby one .9 is quite a lot more efficient than Ruby one .8 , but we’re speaking a improve in productive iterations and a increase in requests every !Yes , there are exceptions: Thin wasn’t able to cope with the rest of its persons . This is probably related to the fact that Thin was style to manage little requests and this Web page is very heavy , needing numerous database queries and using complicated Ruby code ; Passenger with 30 employees experienced an intermittent conduct , failing prior to Unicorn (and Passenger by itself with 60 workers) but coming back again to handle a few a lot more requests .Passenger with sixty workers appears to consider the lead on this one . Unicorn also behaved very nicely , Becoming stable all along .Page 2 Ruby one . results were pretty similar to our prior tests with Ruby 1 .8 .7 , most likely simply because the Web page is quite lighting . Ruby code is not a bottleneck here , as we can clearly see . Unicorn (both 30 and 60 workers) seems to be on top in most iterations .Page three Ruby one . outcomes were , again , really comparable . The cause is probably the same I’ve stated above . Passenger acted weirdly throughout the benchmark . With 30 employees , points went usually until the iteration , where it started failing and acting weird . With 60 workers , it acted weirdly all together .Since these unusual requests have used a surrealistic time of 0 .1 seconds to complete , I’m disqualifying Passenger right here as some thing clearly went wrong . I’ve repeated these tests but the same outcomes came out . I have not tried to discover the true cause of this because , as we’ve seen , it won’t make much difference .MemoryHere is the memory consumption in MB .Autobench memory usageA couple of Particulars regarding storage usage: Thin usually uses much less memory , possibly it’s Web page 1 with 30 workers or page a couple of with 60 . By larger or scaleddown margins , it’s always the storage champion ; Passenger utilized a great deal of storage with 30 employees . From 30 to 60 the distinction is nearly unnoticeable ; When utilizing Ruby 1 .9 , the storage usage was a reduced than with Ruby 1 .8 , except For Unicorn with 30 employees on Web page one .ConclusionsAfter an exhaustive analysis of web servers performance , scalability and memory usage I can only state one fact: The differences are really small , probably not noticeable and not really important to most people . a single exception: Ruby 1 .9 . begin upgrading your applications , folks !If you disagree with me , have another appear at both charts regarding Web page one (with the different Ruby versions) . Yes , real stuff there .Diving into a lot more detail , we can see that Unicorn with 60 employees usually yields better performance and scalability , although using a bit a lot more memory than Thin .We can also verify that the difference ın between 30 and sixty workers is completely insignificant the database is the main bottleneck right here . Perhaps with effective caching solutions (I’m searching at you , memcached !) the outcomes could be a little bit various . The native caching mechanisms of MySQL don’t seem to be highly efficient .You can nevertheless compare 30/60 employees with only four workers , by getting a appear at my prior benchmarks:Once once again , freenas ınternet server a lot more popular than the poor aged server can keep up with , so we’re upgrading . I’m not quite sure how lengthy it will consider to get carried out as it’s mainly Tobias doing the work (thank you , sir !) . We’ve got a large amazon cloud server which we’re Shifting the primary server to . We’ll be able to replicate this as need grows , and we’ll have a load balancer fixed up in front of it all . skin color downloads will nearly definitely be migrated to S3 downloads rather of going through resin as it does now , and we’ll have a separate server just to manage online game logins and auth requests .In other news , we ınvested the day these days out of the office in numerous cafés , as the floor was getting fixed . And we obtained the Machinima .com IGA awards ! They’re quite !If you want to see some pics from the workplace and Mojang in common , Carl has a photo album here . It will get uptodate every now and then .For freenas web server development , we’re working on the new report format , and a new online game launcher . The file format is still in early testing , but it’s searching somewhat promising , except for it taking up a little bit as well much space . It’s faster , although .The new Launcher will be a little bit prettier , will display release notes and other ınformation , will send login requests more than https (finally) , and will request if the person would like to update to the latest edition or not . In the long term , we’ll ınclude assistance For actively playing the previous set up version (after warning the player that there might be unexpected bugs) and the capability to Select what work ımmediately to conserve the degree files , but that’s not coming in this edition .We’ve obtained a meeting planned For tomorrow with some neighborhood members to discuss how to greatest implement the modding .