Hi all, I've got a strange performance issue after changing systems in January. I have some very complicated queries that used to work just fine, taking about 10 seconds. They now take upwards of 6-8 minutes, using 100% of the processor the whole way. When they do eventually complete, there are no errors.
This usually happens on some rather complicated ticket dashboard queries we would like to run, and it's 100% repeatable for the queries on which it happens. It doesn't seem to be related to the amount of information on a given page: removing half of the queries on a given page doesn't speed things up significantly. It can also happen in situations that boggle me. For example: http://trac/tags/'ui' takes about 150ms http://trac/tags/'UI' takes several minutes, pegging two processors. The old system was some sort of debian running sqlite2. Trac and SVN were moved to a CentOS 5 VM, running sqlite3. The trac version stayed the same. Python, py-sqlite, mod_python, and the like were all upgraded as well, to the versions that CentOS uses. Trac itself is 0.10.4. During the upgrade process, sqlite2 was upgraded to sqlite3 as instructed at http://trac.edgewall.org/wiki/PySqlite. Sqlite3 on centos is compiled threadsdafe, as required on the same page. When I do an strace on one of the long queries (and there is ample time to find the offending httpd process), I get pages and pages and pages of: futex(0x55555b444900, FUTEX_WAKE, 1) = 0 There are probably several hundred thousand of these per page load, maybe millions (a request would never finish with strace going), which makes me think there's a locking problem, but I'm not sure how to diagnose and repair it. When the repeated futexes end and something happens, it's usually with a sequence about like this: futex(0x55555b444900, FUTEX_WAKE, 1) = 0 stat("/var/tmp", {st_mode=S_IFDIR|S_ISVTX|0777, st_size=4096, ...}) = 0 access("/var/tmp", R_OK|W_OK|X_OK) = 0 access("/var/tmp/sqlite_Sg3Q5T0lJziLAOJ", F_OK) = -1 ENOENT (No such file or directory) open("/var/tmp/sqlite_Sg3Q5T0lJziLAOJ", O_RDWR|O_CREAT|O_EXCL, 0644) = 15 fstat(15, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 unlink("/var/tmp/sqlite_Sg3Q5T0lJziLAOJ") = 0 lseek(15, 0, SEEK_SET) = 0 read(15, "", 100) = 0 fcntl(15, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0 fcntl(15, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0 fcntl(15, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0 fstat(15, {st_mode=S_IFREG|0644, st_size=0, ...}) = 0 fcntl(15, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=1073741825, len=1}) = 0 fcntl(14, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0 fcntl(14, F_SETLK, {type=F_RDLCK, whence=SEEK_SET, start=1073741826, len=510}) = 0 fcntl(14, F_SETLK, {type=F_UNLCK, whence=SEEK_SET, start=1073741824, len=1}) = 0 access("/var/www/trac/db/trac.db-journal", F_OK) = -1 ENOENT (No such file or directory) fstat(14, {st_mode=S_IFREG|0644, st_size=70977536, ...}) = 0 lseek(14, 0, SEEK_SET) = 0 read(14, "SQLite format 3\0\4\0\1\1\0@ \0\0003\241\0\0\0\0"..., 1024) = 1024 There are no relevant log entries in any log anywhere. Can anyone help? --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Trac Users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/trac-users?hl=en -~----------~----~----~----~------~----~------~--~---
