Overall slowness with Servoy Client

Ive been having an issue with Servoy not manipulating records (queries, updates, inserts, ect.) on my solution in a reasonable amount of time. It seems that no matter where I put the Servoy Applicant Server (on my web server or my database server) the data population and updating takes many seconds, something between 5 and 10 seconds. Locally I have the same Servoy/DB setup running without any speed issues. Also when I go to the web and log into my DB/Servoy server, I dont have any speed issues either using localhost.

Is there anyone else using Servoy thats having a lag issues or unacceptable performance on the internet, but working fine locally?

Its really putting me in a bind. I would like to finish-up a current project but cant because Servoy is to slow for my users to work with. Im also sure that Ill be in for some long nites recreating this solution with a different front-end/technology if the problem doesnt clear up soon.

Link to earlier questions by me about speed.
http://forum.servoy.com/viewtopic.php?t=3387

http://forum.servoy.com/viewtopic.php?t=3359

LOGIN INFO:

SERVER:
http://207.234.146.248:8080

Test solution: Workamper

User: tester
Pass: 123456

Thanks,
Jim

Hi Jim

Had a look at your solution and it took about 8 secs from clicking [Create New Record] to seeing blank fields to add a new record. Tested a hosted solution for one of my clients (@7000 records) and time to see blank form is @2secs.

On your solution noticed that even when I had blank fields to enter FullName etc the portals [Customer Invoice List …] and [Customer AD List] were still populated with a lot of records. Could this be the reason for slowing everything down?

Have you tried going to a basic ‘New Record’ form that does not have portals etc.

HTH

GrahamG

grahamg:
Hi Jim

Had a look at your solution and it took about 8 secs from clicking [Create New Record] to seeing blank fields to add a new record. Tested a hosted solution for one of my clients (@7000 records) and time to see blank form is @2secs.

I made the same test and got more or less the same results when creating records.
Searching a record in customers table performs better (a couple of second, searching on the name field)
Probably it’s a good idea to hide some tabpanel, when creating new records.

Thanks grahamg for doing some “comparative” testing. I have a few forms in my solutions that “mimic” the startup form. They are the customertable2 form and the brochure form. One is a multi-tabbed interface and the other is just the customer form with zero joins. Both seem to slow for use on the internet at this point.

My initial post gives further details
http://forum.servoy.com/viewtopic.php?t=3387

Jim

Hi Jim,

Are you also getting slowness when connected to the server with developer?
If so, maybe you should also check the queries that run in the background.

  1. go into your servoy main folder and open the “servoy_developer.bat” for editing (rightclick, open with text editor)
  2. make sure you have this line entered “java -DSTACKTRACE=true
    (enables stacktrace)
  3. close the bat file and execute it. (a command prompt window will show up with a stacktrace) Before executing make sure that your property file is set with connection to the problem server.
    4)go to a form that’s giving a problem. At the same time check how the stacktrace is behaving compared to the form (does it stop at certain points, maybe during a specific query, or firing loads of queries for related data etc.)
    5)when form is fully loaded look inside the stack trace for “suspicious” looking queries.
    Especially check the where clauses.
    queries with … where orders.ordersid = ?.. are likely to be OK because they use the indexed primary keys.
    Look for where clauses that are a bit “off standard” (maybe containing columns that are not indexed.
    Copy paste queries into your database tool, fire them, and check the execution times. (you might come across queries that can be optimised with an index)

I’ve completed the trace and it looks like Servoy is chunking out a lot of data. I used my Brochure form which has all my basic info about the user with no tabs or portals (about 15 fields and some buttons), and I did a standard update of a single field as my test. I can see in the trace that Servoy is calling all my relations, even though I’m only displaying one table in my form. But with my untrained eye, I can’t tell if there’s anything amiss. Again it take around 3 to 5 seconds to update a record. And about twice that to scroll through the record set on this particular form. The times get worse with forms having tabs and protals. Any incite would be appreciated.


Scheduler sleeping for 9223370934241655042 milliseconds, queue
[ b48cc86d-4a04-11d9-bb02-8c05de745c69(9223372036854775807) ]

Running queue handler for client b48cc86d-4a04-11d9-bb02-8c05de745c69.

localwk: Got connection, thread=RMI TCP Connection(26)-66.76.130.234

used sql select CustomerTable.CustID
from CustomerTable
order by CustomerTable.CustID

localwk: Closed connection, thread=RMI TCP Connection(26)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(26)-66.76.130.234

used sql select CustomerEmployerInfoTable.EmployerInfoID
from CustomerEmployerInfoTable
where CustomerEmployerInfoTable.CustID = ?
order by CustomerEmployerInfoTable.EmployerInfoID

questiondata[0]= 111357 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(26)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(26)-66.76.130.234

used sql select CustomerMarketingTable.MarketingID
from CustomerMarketingTable
where CustomerMarketingTable.CustID = ?
order by CustomerMarketingTable.MarketingID

questiondata[0]= 111357 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(26)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(26)-66.76.130.234

used sql select CustomerHistoryCombineTable.HistoryCombineID
from CustomerHistoryCombineTable
where CustomerHistoryCombineTable.CustID = ?
order by CustomerHistoryCombineTable.HistoryCombineID

questiondata[0]= 111357 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(26)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(26)-66.76.130.234

used sql select CustomerOrderDetailTable.OrderDetailID
from CustomerOrderDetailTable
where CustomerOrderDetailTable.CustID = ?
order by CustomerOrderDetailTable.OrderDetailID

questiondata[0]= 111357 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(26)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(26)-66.76.130.234

used sql select NewInvoiceOrderTable.OrdInvID
from NewInvoiceOrderTable
where NewInvoiceOrderTable.CustID = ?
order by NewInvoiceOrderTable.OrdInvID

questiondata[0]= 111357 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(26)-66.76.130.234

returning the socket that is in the pool 1ecc08c[SSL_RSA_WITH_RC4_128_MD5:
Socket[addr=/66.76.130.234,port=32889,localport=1099]] for endpoint 169.254.130.197:2002

localwk: Got connection, thread=RMI TCP Connection(26)-66.76.130.234

used sql select CustomerBillingTable.BillingID
from CustomerBillingTable
where CustomerBillingTable.CustID = ?
order by CustomerBillingTable.BillingID

questiondata[0]= 111357 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(26)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(26)-66.76.130.234

used sql select distinct custtype
from customertable

localwk: Closed connection, thread=RMI TCP Connection(26)-66.76.130.234

PingScanner woke up, queue
[ 6ba302eb-4a04-11d9-bb02-8c05de745c69(1102613120734) b48cc86d-4a04-11d9-bb02-8c05de745c69(1102613123546) ]
PingScanner sleeping for 297188 milliseconds, queue
[ 6ba302eb-4a04-11d9-bb02-8c05de745c69(1102613120734) b48cc86d-4a04-11d9-bb02-8c05de745c69(1102613123546) ]

localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select CustomerTable.CustID, CustomerTable.CreatedBy, CustomerTable.CreatedDate,
CustomerTable.ModifiedBy, CustomerTable.ModifiedDate, CustomerTable.ModifiedTime,
CustomerTable.addCURRAdd2, CustomerTable.addCURRAddSt, CustomerTable.addCURRcity,
CustomerTable.addCURRcountry, CustomerTable.addCURRstate, CustomerTable.addCURRzip,
CustomerTable.Company, CustomerTable.CustNAMEfirst, CustomerTable.CustNAMEFULorg,
CustomerTable.CustNAMElast, CustomerTable.CustNAMEmiddle, CustomerTable.CustNAMEprefix,
CustomerTable.CustNAMEsuffix, CustomerTable.CustType, CustomerTable.EmailaddDatechange,
CustomerTable.EmailSubPLUS, CustomerTable.DateBrochureMailed, CustomerTable.DateWKNewsMailed,
CustomerTable.Photos_EmployerView, CustomerTable.SubsExpireFull, CustomerTable.FARDate,
CustomerTable.FeaturedEmployer, CustomerTable.MailWKNews, CustomerTable.NotesGeneral,
CustomerTable.PermissionCode
from CustomerTable
where CustomerTable.CustID = ?

questiondata[0]= 111557 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select CustomerTable.CustID from CustomerTable order by CustomerTable.CustID

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select CustomerEmployerInfoTable.EmployerInfoID
from CustomerEmployerInfoTable
where CustomerEmployerInfoTable.CustID = ?
order by CustomerEmployerInfoTable.EmployerInfoID

questiondata[0]= 111557 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select CustomerMarketingTable.MarketingID
from CustomerMarketingTable
where CustomerMarketingTable.CustID = ?
order by CustomerMarketingTable.MarketingID

questiondata[0]= 111557 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select CustomerHistoryCombineTable.HistoryCombineID
from CustomerHistoryCombineTable
where CustomerHistoryCombineTable.CustID = ?
order by CustomerHistoryCombineTable.HistoryCombineID

questiondata[0]= 111557 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select CustomerOrderDetailTable.OrderDetailID
from CustomerOrderDetailTable
where CustomerOrderDetailTable.CustID = ?
order by CustomerOrderDetailTable.OrderDetailID

questiondata[0]= 111557 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select NewInvoiceOrderTable.OrdInvID
from NewInvoiceOrderTable
where NewInvoiceOrderTable.CustID = ?
order by NewInvoiceOrderTable.OrdInvID

questiondata[0]= 111557 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select CustomerBillingTable.BillingID
from CustomerBillingTable
where CustomerBillingTable.CustID = ?
order by CustomerBillingTable.BillingID

questiondata[0]= 111557 ,type: java.lang.Integer

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234
localwk: Got connection, thread=RMI TCP Connection(27)-66.76.130.234

used sql select distinct custtype from customertable

localwk: Closed connection, thread=RMI TCP Connection(27)-66.76.130.234


Thanks again,
Jim