performance degradation with burst connects
-------------------------------------------

                 Key: CORE-4650
                 URL: http://tracker.firebirdsql.org/browse/CORE-4650
             Project: Firebird Core
          Issue Type: Bug
          Components: Engine
    Affects Versions: 3.0 Beta 1
         Environment: Win7 64Bit WI-T3.0.0.31374 Firebird 3.0 Beta 1, Apache 
2.4, Firefox 34, d3.js/XHR
            Reporter: Volker Rehn


test scenario: web application sending a dozen or so burst requests 
asynchronously to web server / firebird at a time. The requests are only 
milliseconds apart, and each of them only asks for a small amount of blob data 
(< 100 B - up to a few 100 KB, but data volume doesn't play a role here). From 
a web server/firebird perspective, they all come with the same connect data, 
host/port:db-alias, user, originating client are the same. Requests/connections 
are all short-lived, they ask for data and disconnect again, within 
milliseconds.

With Firebird alpha 2, a test page needs 2 seconds to fully load, with beta 1, 
it needs 4 seconds. Other test pages similar.

BUT, and this is the esoteric part, and perhaps the key to solve this, if some 
desktop application (eg Flamerobin) simply holds a *constant* connection to the 
database while the test page is run, the test page again loads in 2 seconds or 
even less. All of this reproducible, no cache effects. Disconnect the 
application (ending the constant connection) and the web page runs slow. 
Connect Flamerobin and the test page is fast.

What happens is that some requests of the test page, not all of them, but 
always the same, are getting delayed, typically and reproducible for around 1 
second. I verified that the delay is not due to the database generating the 
data, but due to its delivery by the database server.

It looks like it has to do with Firebird beta's connection handling. 
Connections coming through the web server are short-lived, maybe Apache does 
some pooling, I don't know. As if Firebird would try to cleanup or release or 
reallocate ressources after it handled two or three of those fast connections. 
Or it simply takes a break for a second ;-). But only if there is no constant 
connection at the same time.
Hope this makes sense to you.

С наступающим Новым годом

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: 
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

------------------------------------------------------------------------------
Dive into the World of Parallel Programming! The Go Parallel Website,
sponsored by Intel and developed in partnership with Slashdot Media, is your
hub for all things parallel software development, from weekly thought
leadership blogs to news, videos, case studies, tutorials and more. Take a
look and join the conversation now. http://goparallel.sourceforge.net
Firebird-Devel mailing list, web interface at 
https://lists.sourceforge.net/lists/listinfo/firebird-devel

Reply via email to