I have a Servoy Server - Client connection over a VPN IPsec tunnel. The Server Host speed is SDSL 1024 kbit/s and the Client Remote speed is more than 2000 kbit/s. Host and Remotes network are behind an ASTARO Firewall. The connection between Servoy Client and Server works and the solution opens. But the performance is verry bad. Loading and changing forms takes too much time (more than 20 sec.).
Any ideas what is wrong?
Have you done any comparison testing to identify whether it is the VPN which is causing this delay ?
For example:
Does this performance/form load issue happen in developer ?
Have you launched a client from developer and tested that local served performance ?
Can you test the true Server/Client setup without the VPN ?
the Client/Server connection performance in the local network is really good. Also the local Client/Developer connection makes no difference in speed.
Over the VPN connection I have access to the Hosts in the clients network. Up- and downloading files works with more than 300 kbit/s and VNC access to hosted machines works very well for administrative activities. RDP connection to a Windows PC works so fast as in the local network.
not only the first time of loading the forms, but if a loaded form is still in cash it opens quick. The whole launch procedure takes too much time…
Your reply confused me a little, so what you say is that the process of loading forms takes (too) long the first time but there is no issue anymore when the form is cached?
And, apart from the above, you are under the impression that loading your solution takes too long?
Do you see any error in your log files on startup?
Do you perform many queries or is there some ‘heavy’ stuff going on in your on startup method(s)?
No sorry, loading the solution takes (too) long time, also changing the forms (from list to form view) and fireing some simple onAction methodes, but it seems that opening previous forms will be faster (because they are hold in cash?). There is only less data in the database and no heavy query in the startup methode. Here is the log file entry on startup:
Jan 4 17:13:40 iMac88-1 /usr/bin/java: Java is generating its shared archive, version 1.5
04.01.2008 17:16:58 com.servoy.j2db.util.Debug log
INFO: Starting Servoy from /
04.01.2008 17:16:58 com.servoy.j2db.util.Debug log
INFO: Servoy 3.5.3 build-516 on Mac OS X using Java 1.5.0_13
04.01.2008 17:19:56 com.servoy.j2db.util.Debug error
SEVERE: Throwable
java.lang.IllegalArgumentException: Malformed pattern “###.###,##”
at java.text.DecimalFormat.applyPattern(DecimalFormat.java:2561)
at java.text.DecimalFormat.(DecimalFormat.java:414)
at com.servoy.j2db.dataui.RoundHalfUpDecimalFormat.(Unknown Source)
at com.servoy.j2db.dataui.DataField.setFormat(Unknown Source)
at com.servoy.j2db.dataui.ComponentFactory.a(Unknown Source)
at com.servoy.j2db.dataui.ComponentFactory.a(Unknown Source)
at com.servoy.j2db.dataui.ComponentFactory.createComponent(Unknown Source)
at com.servoy.j2db.dataui.DataRendererFactory.a(Unknown Source)
at com.servoy.j2db.dataui.DataRendererFactory.completeRenderers(Unknown Source)
at com.servoy.j2db.FormController.a(Unknown Source)
at com.servoy.j2db.FormController.try(Unknown Source)
at com.servoy.j2db.FormManager.goto(Unknown Source)
at com.servoy.j2db.scripting.CreationalPrototype.get(Unknown Source)
at org.mozilla.javascript.ScriptRuntime.getProp(ScriptRuntime.java:726)
at org.mozilla.javascript.gen.c138.call(m_print_invoice:28)
at org.mozilla.javascript.ScriptRuntime.call(ScriptRuntime.java:1254)
at org.mozilla.javascript.gen.c137.call(m_btn_print:29)
at com.servoy.j2db.scripting.f.executeFunction(Unknown Source)
at com.servoy.j2db.FormController.a(Unknown Source)
at com.servoy.j2db.FormController.executeFunction(Unknown Source)
at com.servoy.j2db.FormController.actionPerformed(Unknown Source)
at com.servoy.j2db.FormController$a.actionPerformed(Unknown Source)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1882)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2202)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:231)
at java.awt.Component.processMouseEvent(Component.java:5583)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
at java.awt.Component.processEvent(Component.java:5348)
at java.awt.Container.processEvent(Container.java:2010)
at java.awt.Component.dispatchEventImpl(Component.java:4050)
at java.awt.Container.dispatchEventImpl(Container.java:2068)
at java.awt.Component.dispatchEvent(Component.java:3885)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
at java.awt.Container.dispatchEventImpl(Container.java:2054)
at java.awt.Window.dispatchEventImpl(Window.java:1791)
at java.awt.Component.dispatchEvent(Component.java:3885)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)
I hope I could discribe it a little bit better
Thomas
the Server Performance Data shows actions (5) like:
select top 501 sg.group_id,sg.group_name from servoy_groups sg,servoy_user_groups sug, servoy_users su where sg.group_id = sug.group_id and sug.user_id=su.user_id and su.user_uid=? order by sg.group_name
or
select top 1001 user_uid,user_name,user_id from servoy_users order by user_name
The performance between Servoy Server and the remote Clients is now better. I tried a lot by changing the Firewall’s parameters, like configuring a forwarding for port 1099 and so on. I think there is the key to get a faster connection and launching. Am I right?
If your solution works fine on the LAN but it is slow over the VPN then any improvements or tweaks which can be made to the routed connection must help
I am no router expert so this is opinion only: I understand that you only have to make sure that specific ports are open to allow traffic through and they should not need to be ‘forwarded’ to any other port. If 1099 is open and allowing traffic to pass through then that should be enough
Do note that there could still be elements in how the solution is built that may still have an impact upon how it performs over the VPN connection, though
Firewalls and Router cofigurations is an other wide field and every network has its own character…
Harry Catharell:
Do note that there could still be elements in how the solution is built that may still have an impact upon how it performs over the VPN connection, thoughy
I’m with you, but what kind of elements that are? I’m not a Servoy routinier in remote network solutions. I could detect heavy stuff in my solutions after have had built it… . I believe that all Servoy programmers will make their experience in learning by doing .
I’m with you, but what kind of elements that are? I’m not a Servoy routinier in remote network solutions. I could detect heavy stuff in my solutions after have had built it… . I believe that all Servoy programmers will make their experience in learning by doing .
Yes. Delete folder ‘.Servoy’ from profile user used in the PC client and restart Servoy.
It is very likely that the solution is damaged. We are already happened several times.