Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

what happens when changing from DEV to PROD mode in "application.conf" file?

I am using play framework 1.2.5, for past two days I had a very big issue on load testing that is for every API call to the sever it takes around 1200-1400ms as average, but today I just changed the following only one line in the file application.conf which dramatically reduces the average time to 20 - 50 ms , the line as follows,

  application.mode=prod
  %prod.application.mode=prod

initially it was like

  application.mode=dev 
  %prod.application.mode=prod

So from this I could understand that changing from dev to production makes something and what I found in Internet is, In dev mode play.pool=1 by default whereas in production mode play.pool = no of processors + 1, my ubuntu machine is 4 processor so it uses 5 thread. Now coming to the Problem,if what I found is true then when I change the play.pool = 5 manually in the application.conf does not gives me a faster result neither if i set play.pool=1 and run in production mode also doesnot slows down my application loadtest results, So I need to know what happens when I change from dev to prod mode, other than this play.pool which makes my application faster. because I am facing problem In UAT where no good results for changing in prod mode also, it only works in my localhost.please find me a solution sooner thanks in Advance.

UPDATE :

Yes I do know all those stuffs like in DEV mode the application reloads and compiles but, perhaps its not for each and every request only at the initial program loading i think , but my Problem is this prod mode working fine at my localhost and my local server, when I go for UAT I get a bad results at load test around 800ms as average. the application is slow even in prod even I am performing the loadtest locally(the jmeter is installed in the server machine and I am load-testing it using Remote Desktop Connection). So other than compilation and reloading, I need to know what are all the changes performed in the application.conf file when I change from DEV to PROD mode like the play.pool changes from 1 thread to (no of processors + 1) thread. FYI: my localhost system is 4 processor machine, and local server machine is 4 processor, but the UAT machine is 2 processor, if this is the issue I even tried of changing the pool threads to 10(play.pool=10) and no good results at UAT.

like image 783
Wiki Avatar asked Aug 22 '13 14:08

Wiki


Video Answer


2 Answers

Additionally to the single thread, in dev mode the application start is delayed until the first request is send. In prod mode the app will start immediately. This obviously affects the load time of the first request.

I guess the 'bad' performance in dev mode is mostly caused by the feature to reload and compile classes while running. On each request classes are checked for changes and may be reloaded. I think this feature is very worth increased loading times and I don't know if it is even possible to deactivate.

You probably shouldn't run any performance/acceptance tests in dev mode. Here's a short a discussion about it. Instead of trying to increase dev mode performance, you should just use the prod mode.

like image 170
kapex Avatar answered Nov 12 '22 03:11

kapex


You should do some more analysis before jumping to your guns.
Firstly you try to understand where that extra time is spent.

  • Rendering the templates?
  • Hanging waiting for DB Connections?
  • Are there any thread locks?
  • Has the database been optimized with indexes?
  • Have you measured the processor and memory usage?
  • Are you doing any costly IO Operations?
  • Are any other processes running on this machine?
like image 30
emt14 Avatar answered Nov 12 '22 02:11

emt14