Welcome to the SRP Forum! Please refer to the SRP Forum FAQ post if you have any questions regarding how the forum works.
oengine.exe idleTimeout=n
Greetings!
I apologize for raising this subject again. I/We beat it to death 2 years ago, but
thought I'd post the question again....see if any new ideas have cropped up.
Basically, I want to reduce the oengine.exe idle time below the currently allowed
1 minute in eserver.cfg
IdleTimeout=1
When oengine.exe completes the task, it 'idles' waiting for another task. After some time, it closes and opens again when there is another request. If 'called' while waiting for another task, the caller must have the same login as previous. In my case, though I have license for 3 oengines, I have two possible logins. If all 3 oengines are 'idle', and even if my two logins are represented, an error is usually thrown as the request seems to always select the oengine with the 'wrong' login when there are no 'closed' oengines available for it to open.
I would like to shorten the time the oengines sit in 'idle' mode so there is always an unopened oengine available for
RUN_OECGI_REQUEST.
Running oecgi3 on OI 9.1.1
in eserver.cfg....
// time (in minutes) to wait before killing idle engines from queue
I have IdleTimeout=1
Is there any way to shorten this time? say to 2 seconds, for example.
Then when the user get the error, a retry will work. Currently, 1 minute seems a lot longer. Not measured it, though.
Have fun,
Paxton
I apologize for raising this subject again. I/We beat it to death 2 years ago, but
thought I'd post the question again....see if any new ideas have cropped up.
Basically, I want to reduce the oengine.exe idle time below the currently allowed
1 minute in eserver.cfg
IdleTimeout=1
When oengine.exe completes the task, it 'idles' waiting for another task. After some time, it closes and opens again when there is another request. If 'called' while waiting for another task, the caller must have the same login as previous. In my case, though I have license for 3 oengines, I have two possible logins. If all 3 oengines are 'idle', and even if my two logins are represented, an error is usually thrown as the request seems to always select the oengine with the 'wrong' login when there are no 'closed' oengines available for it to open.
I would like to shorten the time the oengines sit in 'idle' mode so there is always an unopened oengine available for
RUN_OECGI_REQUEST.
Running oecgi3 on OI 9.1.1
in eserver.cfg....
// time (in minutes) to wait before killing idle engines from queue
I have IdleTimeout=1
Is there any way to shorten this time? say to 2 seconds, for example.
Then when the user get the error, a retry will work. Currently, 1 minute seems a lot longer. Not measured it, though.
Have fun,
Paxton
Comments
The quick answer to your question is, no, there is no way to shorten the IdleTimeout without asking Revelation to shorten it on their end. However, I think there are practical limitations to consider. Spinning up and shutting down an engine is expensive, requiring a couple seconds even on fast machines. Even if Revelation could shorten the idle time, I doubt they could get as low as you want.
I think the main issue is that an engine server is not supposed to log into different accounts. The whole point of the OESocketServer is to abstractly behave like a single login while providing increased throughput. If you have two different logins, then you should be running two instances of OESocketServer on different ports. Then your clients make calls to the server that contains the resources they need.
Thankyou for your OESocketServer explanation. That is something I can work on. I am running both on port 8088.
Really appreciate that insight. This is mostly 'hobby work' I am usually the only user but my application needs to use two logins.....(Long story)
Have fun,
Paxton
Yes. Image one is for a default. Not sure it is required, but there it is.
This is the setting for the ARCS application/login
and this is for the DCE application/login
ARCS hosts my personal home page Happyhome.org with lots of links to stuff I (and maybe my family) likes.
With login, can look up persons and companies in my database and enter recipes and access
various media streaming sites as well as music and videos managed by thedce.com site. DCE hosts thedce.com. I wanted to be able to use the media on thedce.com site without having to maintain thedce.com URL. It works! except for the issue mentioned.
I'm pretty sure you helped me figure some of this out.
Have fun,
Paxton
Well, learning is fun. Much I don't know. I need to run an instance of OengineServer for each OI application. And they need to listen on different ports. So, I guess I need two eserver.cfg files. Now, have to figure out how to launch two OengineServer services.
Is there any documentation somewhere to teach me this?
Have fun,
Paxton
You would not need to as it is implied that that is running in a different OI folder
Anyhow something for me to tinker on this week.
Thanks for the help and insight....the Open Insight :-)
Have fun,
Paxton
@paxton - That is the question I've been trying to answer.
@BarryStevens - Yes, I'm quite aware of that. I think that is what I even said. But Paxton is trying to support two different applications from the same OI folder.
OK, it looks like only one OEngineServer instance per OI folder. Seems restrictive, but disk space is cheap, so I'll try duplicate OI folders.
Thanks much for the info and insight.
Have fun,
Paxton
Greetings!
Running OECGI3 using Apache2.4 with 2 applications in the same instance of OI.
According to OECGI3.EXE Installation and Configuration Quick Start Guide Version 1.1 page 27, this is possible and I have set my Register accordingly and it works (sort of).
The issue is that both applications are set to the same server port (8088) as shown in the guide.
The guide also makes it clear that the port number must match the port number in the eserver.cfg file which must reside in the OpenInsight installation folder.
So, since both applications use the same server port, there is the likelihood that OEngineServer can’t find an available engine with the required ‘signature’ as described in OpenInsight OEngineServer Configuration Version 1.0, page 12.
I am licensed for 3 engines. According to the documentation, EngineServer is supposed to look for an engine with the appropriate signature, but in my testing, it seems that even if one is available, it does not always ‘find’ it and throws the can not login error.
I have attempted to solve this issue by setting the timeout as low as possible, but even a minute seems like a long time.
Perhaps if I could run each application on its own port I could solve this issue, but I don’t see from the doc how to set 2 ports with one instance of OI.
OpenInsight OEngineServer Configuration Version 1.0 explains how to run multiple instances of the OEngineServer service, but that would seem to require multiple instances of OI.
Do you have any guidance?
Have fun,
Paxton
I have it running on my internet facing test server.
Seems to work, not getting logon failures so far. Banging away on both sites. response is fine on an old Core2 Q6700 cpu running WHS 2011.
2 instances of OEngineServer and two instances of (Identical) OI with eserver.cfg the only difference to reflect the two ports.
Added separate OILocation to the each registry entry and separate port numbers for the two instances.
Making and applying upgrades will be ugly now, though. New project :-)
Thanks for the guidance.
Have fun,
Paxton
The OESocketServer.jar file has a parameter for you to specify which eserver.cfg file to use for a particular application. This allows the same OI copy to serve different engines for different applications.
The easiest way to explain it is using the debug version of OESocketServer.
This runs OESocketServer with the configuration in eserver.cfg
java -jar OESocketServer.jar -d 3
This runs OESocketServer with the configuration in another_eserver.cfg which you can create by copying eserver.cfg to another_eserver.cfg and making the needed changes.
java -jar OESocketServer.jar -l another_eserver.cfg -d 3
So in another_eserver.cfg you could change the PortNumber and WebServerPortNumbers. You would then go into the registry and change the ARCS or DCE PortNumber to use the PortNumber in eserver.cfg.
If this works for your needs please let me know and I'll supply the needed information to run the engine in production as a service instead of debug mode.
Actually I would be interested in that .
I have a number of sites with multiple OI instances running. I know that works just fine.
I also have a number of sites that have a shell of our "ITMS" system pointing to "OPTO" data just to host a older web app (this has been our historical attempt to implement what you are suggesting)
I understand the multiples OIs on the same server.
I understand the multiple debug instances in the same OI.
The bit I am missing is , even though I can have multiple eserver.cfg files and wrapper.confs, when I install the appropriate service how I make it use a specific eserver?
THAT would be handy....
EDIT: I just double checked the wrapper.conf to make sure I wasnt missing a easy setting. I couldn't find one.
Thats not to say there does't exist a setting that we are not using! I will be honest and say I have not investigated that possibility.
You will have multiple OESocketServer running as a service with each one looking at their own configured port (Eserver.cfg param). So, your registry port setting for each app will determone which one is used.
In order to install the service we use wrapper.exe to install the wrapper.conf (via the batch file). The port actually comes from the eserver.cfg file...which from what I could see is not linked to a particular eserver.cfg file.
e.g.
I can have 5 entries in the Registry, each with their own port. No problem.
I can have 5 seperate oecgi.exe instances so they hit the right registry entry from web access. No problem.
I can have 5 services installed (via 5 different wrapper.confs) that label the Service distinctly (I always include the port here for clearly descriptive and meaningful Service Names and Descriptions. e.g. "Revelation OpenEngine Server for Opto APIs on Port 6088", "Revelation OpenEngine Server for iTMS WebApp on Port 8088" for the Descriptions). No problem.
If individual oesocketserver.jar files are needed then I know where that can be identified in the wrapper.conf before installing (wrapper.java.classpath.2. Maybe wrapper.app.parameter.1? ). No problem (I think)
I can have 5 eserver.cfg files that match the ports in the registry. No problem.
What I am missing is how to link the wrapper.conf that creates the service to use eserver_5.cfg instead of just eserver.cfg. I think that might be the nuts and bolts of what paxton needs as well.
Its gonna be easy, I am sure. Jared will drop a knowledge bomb in true Don style and we will all be away!
# Application parameters. Add parameters as needed starting from 1 wrapper.app.parameter.1=com.revelation.oesocketserver.Main wrapper.app.parameter.2=-l eserver_5.cfg
@JaredBratu, this one is for you:
I've been away a few days but will get back to this with the new information supplied by Jared.
Currently, I have 2 wrapper.conf's one for each service with appropriate changes for each application.
To run both applications from the same instance of OI, all I need to do is add an entry in each of the wrapper.conf files to identify the eserver.conf file to use as identified by the wrapper.app.parameter. Then, both eserver.cfg files (different names of course) can live in the same OI folder.
following Don's example then
in wrapperARCS.conf (to install OEngineServiceARCS)
I'd add:
wrapper.app.parameter.1=com.revelation.oesocketserver.Main
wrapper.app.parameter.2=-l eserverARCS.cfg
?
Actually two lines?
I presume the -1 in the last line is some kind of flag?
Am I seeing this correctly?
Have fun
Paxton
Progress....details below.
I have set up two wrapper.conf files one for each application with the last two lines as suggested by Don where the eserver.cfg files are called eserverDCE.cfg (port 8089) and eserverARCS.cfg (port 8088) (for completeness, renamed original eserver.cfg to eserverORIG.cfg).
Added lines to the end of wrapperDCE.conf
wrapper.app.parameter.1=com.revelation.oesocketserver.Main
wrapper.app.parameter.2=-l eserverDCE.cfg
and to the end of wrapperARCS.conf
wrapper.app.parameter.1=com.revelation.oesocketserver.Main
wrapper.app.parameter.2=-l eserverARCS.cfg
Adjusted the registry to show OILoction as \RefSoft\Oinsight for both apps.
Uninstalled the running OEngineServerDCE and OEngineServerARCS services.
Install both services.
But when try to start either, they start starting, then stop.
So, moving to the command line.
Open one command window and start
java -jar OESocketServer.jar -l eserverARCS.cfg -d 3
works just fine. can use the web application just fine.
Try the other URL and as expected, port socket error.
Kill and run
java -jar OESocketServer.jar -l eserverDCEcfg -d 3
works fine.
Open a 2nd command window and run
java -jar OESocketServer.jar -l eserverARCS.cfg -d 3
and now, both web apps run just fine. Whupee!
So, would like to get these running as services.
Must have some configuration wrong.
I tried deleting
wrapper.app.parameter.1=com.revelation.oesocketserver.Main
from my wrapper.conf only using
wrapper.app.parameter.1=-l eserverDCE.cfg
but no joy.
Suggestions?
Have fun,
Paxton
Complete success, Now have two OESocketServers running as services. one for each application on 2 separate ports and configured by 2 eserver.cfg files.
The solution was to add a line in wrapperARCS.conf right after the existing line:
wrapper.app.parameter.1=com.revelation.oesocketserver.main
thus:
wrapper.app.parameter.2=-l eserverARCS.conf
Of course Don told me this in his post, but I was adding at the end of the file instead of after
wrapper.app.parameter.1=com.revelation.oesocketserver.main
(about line 32 in my conf files.)
Thanks all for all the help!
Have fun,
Paxton