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
«1

Comments

  • I'm not sure what the original conversation entailed, so forgive me if I beat any dead horses.

    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.
  • Kevin,
    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
  • @Paxton - To follow up on Kevin's response, how are you getting two logins to use the same engine server? Do you have two entries in the Registry?
  • Happy New Year, Don.
    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


  • @Paxton - A cool. This does explain the problem you are experiencing and is probably why you might not have gotten a response on the Revelation forum. It's possible no one understands you because it is expected that different sites would use different ServerPorts (and thus different OEngineServers). We have done this for various clients and even internally we have a server that hosts about a half-dozen sites.
  • Don,
    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
  • There is an articile somewhere about renaming eserver.cfg for a second copy, but, I have searched and cant find it. This stuff is in so many different places - and is probably an adendum to a setup article.
  • 103-966 OpenInsight OEngineServer Configuration.pdf documents the /l switch for using a renamed eserver.cfg file, but this is only relevant when launching OESocketServer.jar from a command prompt. I forget how to install the service using a renamed oserver.cfg file. I'm pretty sure @JaredBratu knows but he is traveling for a few days so I'm not sure when he'll be back online.
  • The aforementioned document does refer to running multiple EngineServer services and this would require a custom InstallApp-NT.bat file that points to a custom wrapper.conf file. I know this is necessary so the service can be named differently, but I don't see where in the wrapper.conf file it can be updated to point to a custom eserver.cfg file. That's the missing link for me.
  • I think that has the same information in the PDF document I referenced. It just isn't clear how the custom eserver.cfg is referenced. Do you see something I don't?
  • @DonBakke
    You would not need to as it is implied that that is running in a different OI folder
  • ...you would just change the portnumber
  • Lots of good stuff, Barry and Don. It looks like eserver.cfg is tied to the OInsight folder. Is the eserver.cfg filename hard coded in the Java application? doesn't seem reasonable.
    Anyhow something for me to tinker on this week.
    Thanks for the help and insight....the Open Insight :-)
    Have fun,
    Paxton
  • It looks like eserver.cfg is tied to the OInsight folder. Is the eserver.cfg filename hard coded in the Java application? doesn't seem reasonable.

    @paxton - That is the question I've been trying to answer.
    You would not need to as it is implied that that is running in a different OI folder

    @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.
  • Yes, Barry is correct. Two apps from the same folder wanting an OEngineServer. But each app needs its own OEngineServer.
    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
  • Are ARCS and DCE parallel applications that inherit from SYSPROG or do they have a different relationship to each other?
  • I'm pretty sure they both inherit from SYSPROG. They were started years apart, very independent an plain vanilla.
  • I posted the following on Revelation Software's site but thought there might be interest here.
    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
  • FYI,
    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
  • 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.
  • edited January 2023
    @JaredBratu

    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.
  • As I see it.
    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.
  • Barry, that is true as far as I can tell too.

    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!
  • @Opto_Will - Jared gets the credit for this and I think he meant to post earlier but he must have forgotten. In wrapper.conf add the last line:

    # 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
  • Thank you @DonBakke. That is indeed the missing piece of gold.

    @JaredBratu, this one is for you:

  • @Opto_Will - Indeed. This was the very thing I was trying to remember much earlier in this thread. I knew there was a way but I rarely do it so it escaped my memory and I couldn't find any of the sites that had this. Also, this isn't documented. Just a few days ago I went back to work for a client that I forgot had multiple sites and there it was.
  • Thanks, all.
    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
  • Greetings!
    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
  • Greetings all!
    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
Sign In or Register to comment.