Hey Jeremy Thanks for the info.  I did get this response from the Passenger 
folks just in case anyone is interested.


Excerpt from : 
https://groups.google.com/forum/#!topic/phusion-passenger/7Gc4vKC6yD4
--------------

The author of the Sequel ORM gem recommended closing newly initialized

connections before rackup completes i.e. run MyApplication


That advice is exactly like what is documented at

https://www.phusionpassenger.com/library/indepth/ruby/spawn_methods/#unintentional-file-descriptor-sharing
.

However, the Sequel author's advice does not apply at all in your

case, because you are using JRuby, so no smart spawning is supported.
---------------



On Friday, August 21, 2015 at 10:04:08 AM UTC-5, Jeremy Evans wrote:
>
> On Friday, August 21, 2015 at 7:20:19 AM UTC-7, Dale Ackerman wrote:
>>
>> Thanks Jeremy;
>>
>> So if I am using JRuby/Sinatra on Community Passenger I will need to 
>> basically close/disconnect my newly initialized connections  basic example 
>> of config.ru
>>
>> openedge_jdbc_uri = {
>>   :adapter => 'jdbc',
>>   :username => 'someuser',
>>   :password => 'somepassword',
>>   :driver => 'com.ddtek.jdbc.openedge.OpenEdgeDriver',
>>   :url => 
>> 'jdbc:datadirect:openedge://somedbserver.bogus.com:7910;databaseName=customer'
>> ,
>>   :pool_timeout => 120,
>>   :max_connections => ENV['RACK_ENV'].to_s.downcase == 'production' ? 16 
>> : 4,
>>   :convert_types => false,
>>   :logger => $logger,
>>   :after_connect => Proc.new{|con|
>>     stmt = con.createStatement()
>>     stmt.execute("SET SCHEMA 'PUB'")
>>   }
>> }
>>
>> DB = Sequel.connect(openedge_jdbc_uri)
>> DB.extension(:newrelic_instrumentation)
>> DB.extension(:connection_validator)
>> DB.extend_datasets(Sequel::Progress::DatasetMethods)
>> # Invalidate connection if idle for 1/2 hour
>> DB.pool.connection_validation_timeout = 1800
>> DB.extend_datasets(SequelProgessTenDatasetMethods)
>>
>> DB.disconnect
>>
>> run MyAwesomeWebService
>>
>>
>>
>> I have one more question:  In the above code I set a pool size of 16. 
>>  Now if I am deployed on a Passenger JRuby Sinatra stack and Passenger 
>> allocates 5 Processes(Forked)  I would end up with 5 x 16 = 80 db 
>> connections?  Further more because now we can only handle 5 concurrent 
>> requests (5 Processes) I am only using 5 of the 80 db connections?
>>
>
> JRuby/JVM doesn't support forking, so I'm not sure you need the 
> DB.disconnect.  You only need to use DB.disconnect if you are forking and 
> loading the app before the fork.  I doubt that is the case on JRuby, but 
> the Phusion guys would know better than I.
>  
>
>> I wonder if I really need to go to a real Java (JVM) application server? 
>>  (I don't want to do that.  We are really a ruby shop.  The only reason I 
>> am using JRuby is mostly because of having to connect to OpenEdge via JDBC).
>>
>
> You could always try puma with JRuby, I hear that combination is pretty 
> good.  I don't have any production experience running JRuby apps, most of 
> my apps are low traffic and run fine on MRI/Unicorn.
>
> Thanks,
> Jeremy
>

-- 
You received this message because you are subscribed to the Google Groups 
"sequel-talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sequel-talk.
For more options, visit https://groups.google.com/d/optout.

Reply via email to