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.
