Hi Alexey, Thanks for the answer. I'll look at our options regarding the professional services.
Regards, Zoltan PS: I am familiar with database concepts like MVCC, transactions, locking and query execution planning but unfortunately I don't know how to investigate these mechanisms within Firebird :-( On Tue, Feb 11, 2014 at 9:58 AM, Alexey Kovyazin <a...@ib-aid.com> wrote: > > > Hi Zoltan, > > this problem is often topic here. > Solving this problem is a long boring process, where community will try to > explain you basics about transactions and transaction markers meaning, ask > you to send gstat statistics, then explain about record versioning and > garbage and long-running transactions, about advanced monitoring and so on. > In the end you will land with big3 - long-running transactions, bad plans > and wrong configuration, each is another big topic . > > In short, your database size looks pretty serious to afford professional > services > http://www.firebirdsql.org/en/professional-support/ > > Regards, > Alexey Kovyazin > IBSurgeon > PS If somebody here wants to go through steps described above, please > don't hesitate to do this. > > > > > > > Hi, > > I have a strange slowdown problem with a Firebird database. During the > daily use of the database the clients experience significant slowdowns > while the system still have lots of resources available. Some > information about the environment: > > - 64 bit Firebird 2.5.2 server running in SuperServer mode > - the database is running on a 64 bit Windows 2008 R2 server OS > - the server OS is running in a VMware 4.1 VM with 4 CPU cores and 16 GB > of RAM > - the database size is around 37 GB and the number of concurrent > connections to the database is around 150. > > While observing the slowdowns: > > - the CPU usage on the machine is between 40-60% without higher spikes > and the load is nicely distributed among all 4 cores > - the memory usage of the server is around 4-6 GB and the rest of the > memory is used as OS cache > - the disc queue lenghts almost never go over 0.3 with around 2-5 ms > latency > - there is almost no network activity on the server. > > Still, the slowdown seems to be linked to the general load on the > server. During the night when no users are connected to the > database/no background jobs are running a test query used for > reference executes in 4-5 seconds while during the day when all the > users are connected to the database executing the same reference query > requires 60+ seconds to finish. It should be added though that the > slowdown is general in nature, there are no specific queries that are > slower while the server is under load, everything gets slower within > the specific Firebird database. The server has other databases with a > very low number of transactions executed daily and these other > databases show no sign of slowdowns. I even created a copy of the live > database experiencing slowdowns and executed the same query against > both the originaly and the duplicate database - the original did > execute the query slow and hte duplicate fast. The only difference > between the original and the duplicate I know is the number of > connected users/concurrent transactions. > > As I found no evident reasons of all these in the available OS > resources so I tried to fetch statistics from Firebird. > > The observations: > > - at peak times the databse has 30-40 transactions running in parallel > according to mon$statements (where mon$state == 1 which according to > the archives means the transactions are running or are waiting for a > lock) > - fb_lock_print displays the following about the database: > > LOCK_HEADER BLOCK > Version: 145, Active owner: 0, Length: 2097152, Used: 1335440 > Flags: 0x0001 > Enqs: 9993237, Converts: 93191, Rejects: 1417230, Blocks: 2 > Deadlock scans: 0, Deadlocks: 0, Scan interval: 10 > Acquires: 19972846, Acquire blocks: 0, Spin count: 0 > Mutex wait: 0.0% > Hash slots: 1009, Hash lengths (min/avg/max): 0/ 2/ 7 > Remove node: 0, Insert queue: 0, Insert prior: 0 > Owners (38): forward: 20824, backward: 872088 > Free owners (126): forward: 973360, backward: 728016 > Free locks (370): forward: 852200, backward: 195936 > Free requests (12425): forward: 614608, backward: 1230536 > Lock Ordering: Enabled > > Here I noted that the "rejects" field accounts for ~14% of "enqs" > field but unfortunately I don't know the exact meaning of these > values. I guess about 14% of the lock requests are rejected for some > reason but I might be completely wrong. > > So the questions: > > - How should the output of fb_lock_print interpreted in this case? Are > these numbers "wrong" in some sense? Can they be improved by some > parameter tuning? > - What additional steps should be taken to pinpoint what causes the > slowdowns? > > Thanks, > Zoltan > > > > -- Zizi "...nálatok a cégnél múltból nagyon sok van..."