Very slow deletion of user mailboxes?
Andrew McNamara
andrewm at object-craft.com.au
Wed Jul 9 05:59:33 EDT 2003
We're having a problem where deletion of a user by the admin is taking
about 30 seconds. I've attached an abreviated truss of the imapd while
this is taking place. It shows a long string of:
18679: stat("/mail/vmb1/var/mailboxes.db", 0xFFBEEA68) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEEAE0) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEE9C8) = 0
18679: fstat(5, 0xFFBEEAF0) = 0
This is with 2.1.9, --with-mboxlist-db=skiplist --enable-fulldirhash.
Anyone have any suggestions on what might be wrong, or where to look next?
mailboxes.db is a bit under 2MB, and contains around 10k entries (as
counted by "ctl_mboxlist -d | wc -l").
The truss output with more context:
18679: poll(0xFFBEEEE8, 1, 1800000) (sleeping...)
18679: poll(0xFFBEEEE8, 1, 1800000) = 1
18679: time() = 1057743572
18679: read(0, " 2 d e l e t e u s e".., 4096) = 36
18679: fcntl(5, F_SETLKW, 0xFFBEE920) = 0
18679: fstat(5, 0xFFBEEA48) = 0
18679: stat("/mail/vmb1/var/mailboxes.db", 0xFFBEE9C0) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEEA38) = 0
18679: open("/mail/vmb1/spool/A/user/test9772__foo_net_au/cyrus.header", O_RDWR) = 9
18679: fstat(9, 0xFFBEDAD8) = 0
18679: mmap(0x00000000, 203, PROT_READ, MAP_SHARED, 9, 0) = 0xFEFF0000
18679: fcntl(9, F_SETLKW, 0xFFBEDA30) = 0
18679: fstat(9, 0xFFBEDAD8) = 0
18679: stat("/mail/vmb1/spool/A/user/test9772__foo_net_au/cyrus.header", 0xFFBED9A8) = 0
18679: open("/mail/vmb1/spool/A/user/test9772__foo_net_au/cyrus.index", O_RDWR) = 10
18679: fstat(10, 0xFFBED9D8) = 0
18679: mmap(0x00000000, 16384, PROT_READ, MAP_SHARED, 10, 0) = 0xFED70000
18679: open("/mail/vmb1/spool/A/user/test9772__foo_net_au/cyrus.cache", O_RDWR) = 11
18679: fstat(11, 0xFFBEDAD8) = 0
18679: mmap(0x00000000, 16384, PROT_READ, MAP_SHARED, 11, 0) = 0xFED60000
18679: fstat(10, 0xFFBED9D8) = 0
18679: fcntl(10, F_SETLKW, 0xFFBED9B8) = 0
18679: fstat(10, 0xFFBEDAD8) = 0
18679: stat("/mail/vmb1/spool/A/user/test9772__foo_net_au/cyrus.index", 0xFFBEDA50) = 0
18679: fstat(10, 0xFFBED958) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEE9C0) = 0
18679: fstat(5, 0xFFBEEA68) = 0
18679: stat("/mail/vmb1/var/mailboxes.db", 0xFFBEE938) = 0
18679: lseek(5, 987556, SEEK_SET) = 987556
18679: write(5, "\00F1214", 4) = 4
18679: lseek(5, 1959640, SEEK_SET) = 1959640
18679: write(5, "\0\0\004\00F11AC", 8) = 8
18679: fdsync(5, O_RDONLY|O_DSYNC) = 0
18679: lseek(5, 1959648, SEEK_SET) = 1959648
18679: write(5, "\0\0\0FF", 4) = 4
18679: fdsync(5, O_RDONLY|O_DSYNC) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEEAC0) = 0
18679: open("/mail/vmb1/var/quota/A/user.test9772__foo_net_au", O_RDWR) = 12
18679: fcntl(12, F_SETLKW, 0xFFBECA38) = 0
18679: fstat(12, 0xFFBECAD8) = 0
18679: stat("/mail/vmb1/var/quota/A/user.test9772__foo_net_au", 0xFFBEC9B0) = 0
18679: fstat(12, 0xFFBEB958) = 0
18679: mmap(0x00000000, 10, PROT_READ, MAP_SHARED, 12, 0) = 0xFED50000
18679: munmap(0xFED50000, 10) = 0
18679: open("/mail/vmb1/var/quota/A/user.test9772__foo_net_au.NEW", O_RDWR|O_CREAT|O_TRUNC, 0666) = 13
18679: fcntl(13, F_SETLKW, 0xFFBEB6C8) = 0
18679: write(13, " 0\n 2 0 0 0 0\n", 8) = 8
18679: fdsync(13, O_RDONLY|O_SYNC) = 0
18679: rename("/mail/vmb1/var/quota/A/user.test9772__foo_net_au.NEW", "/mail/vmb1/var/quota/A/user.test9772__foo_net_au") = 0
18679: close(12) = 0
18679: fcntl(13, F_SETLKW, 0xFFBEDB38) = 0
18679: open64("/mail/vmb1/spool/A/user/test9772__foo_net_au", O_RDONLY|O_NDELAY) = 12
18679: fcntl(12, F_SETFD, 0x00000001) = 0
18679: fstat64(12, 0xFFBEDAD8) = 0
18679: getdents64(12, 0x0014A288, 1048) = 168
18679: unlink("/mail/vmb1/spool/A/user/test9772__foo_net_au/cyrus.header") = 0
18679: unlink("/mail/vmb1/spool/A/user/test9772__foo_net_au/cyrus.index") = 0
18679: unlink("/mail/vmb1/spool/A/user/test9772__foo_net_au/cyrus.cache") = 0
18679: unlink("/mail/vmb1/spool/A/user/test9772__foo_net_au/1.") = 0
18679: getdents64(12, 0x0014A288, 1048) = 32
18679: unlink("/mail/vmb1/spool/A/user/test9772__foo_net_au/.nfs0DA") = 0
18679: getdents64(12, 0x0014A288, 1048) = 0
18679: close(12) = 0
18679: rmdir("/mail/vmb1/spool/A/user/test9772__foo_net_au") Err#17 EEXIST
18679: close(9) = 0
18679: munmap(0xFEFF0000, 203) = 0
18679: close(10) = 0
18679: munmap(0xFED70000, 16384) = 0
18679: close(11) = 0
18679: munmap(0xFED60000, 16384) = 0
18679: close(13) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEEA48) = 0
18679: fstat(5, 0xFFBEEB70) = 0
18679: stat("/mail/vmb1/var/mailboxes.db", 0xFFBEEAE8) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEEB60) = 0
18679: unlink("/mail/vmb1/var/user/A/test9772__foo_net_au.seen") Err#2 ENOENT
18679: fstat(8, 0xFFBEEBE8) = 0
18679: time() = 1057743572
18679: getpid() = 18679 [7702]
18679: putmsg(8, 0xFFBEE2A0, 0xFFBEE294, 0) = 0
18679: open("/var/run/syslog_door", O_RDONLY) = 9
18679: door_info(9, 0xFFBEE1D8) = 0
18679: getpid() = 18679 [7702]
18679: door_call(9, 0xFFBEE1C0) = 0
18679: close(9) = 0
18679: unlink("/mail/vmb1/var/user/A/test9772__foo_net_au.sub") Err#2 ENOENT
18679: open64("/mail/vmb1/var/quota/A/", O_RDONLY|O_NDELAY) = 9
18679: fcntl(9, F_SETFD, 0x00000001) = 0
18679: fstat64(9, 0xFFBEEBB8) = 0
18679: getdents64(9, 0x0014A288, 1048) = 960
18679: getdents64(9, 0x0014A288, 1048) = 960
18679: getdents64(9, 0x0014A288, 1048) = 960
18679: getdents64(9, 0x0014A288, 1048) = 960
18679: getdents64(9, 0x0014A288, 1048) = 928
18679: unlink("/mail/vmb1/var/quota/A/user.test9772__foo_net_au") = 0
18679: getdents64(9, 0x0014A288, 1048) = 1016
18679: getdents64(9, 0x0014A288, 1048) = 976
18679: getdents64(9, 0x0014A288, 1048) = 976
18679: getdents64(9, 0x0014A288, 1048) = 968
18679: getdents64(9, 0x0014A288, 1048) = 976
18679: getdents64(9, 0x0014A288, 1048) = 992
18679: getdents64(9, 0x0014A288, 1048) = 984
18679: getdents64(9, 0x0014A288, 1048) = 960
18679: getdents64(9, 0x0014A288, 1048) = 992
18679: getdents64(9, 0x0014A288, 1048) = 984
18679: getdents64(9, 0x0014A288, 1048) = 952
18679: getdents64(9, 0x0014A288, 1048) = 968
18679: getdents64(9, 0x0014A288, 1048) = 976
18679: getdents64(9, 0x0014A288, 1048) = 984
18679: getdents64(9, 0x0014A288, 1048) = 960
18679: getdents64(9, 0x0014A288, 1048) = 968
18679: getdents64(9, 0x0014A288, 1048) = 1008
18679: getdents64(9, 0x0014A288, 1048) = 984
18679: getdents64(9, 0x0014A288, 1048) = 952
18679: getdents64(9, 0x0014A288, 1048) = 960
18679: getdents64(9, 0x0014A288, 1048) = 992
18679: getdents64(9, 0x0014A288, 1048) = 984
18679: getdents64(9, 0x0014A288, 1048) = 1000
18679: getdents64(9, 0x0014A288, 1048) = 968
18679: getdents64(9, 0x0014A288, 1048) = 376
18679: getdents64(9, 0x0014A288, 1048) = 0
18679: close(9) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEE9C8) = 0
18679: fstat(5, 0xFFBEEAF0) = 0
18679: stat("/mail/vmb1/var/mailboxes.db", 0xFFBEEA68) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEEAE0) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEE9C8) = 0
18679: fstat(5, 0xFFBEEAF0) = 0
18679: stat("/mail/vmb1/var/mailboxes.db", 0xFFBEEA68) = 0
[...last 4 lines repeated about 10k times, then...]
18679: fcntl(5, F_SETLKW, 0xFFBEEAE0) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEE9C8) = 0
18679: fstat(5, 0xFFBEEAF0) = 0
18679: stat("/mail/vmb1/var/mailboxes.db", 0xFFBEEA68) = 0
18679: fcntl(5, F_SETLKW, 0xFFBEEAE0) = 0
18679: open64("/mail/vmb1/var/sieve/t/test9772__foo_net_au", O_RDONLY|O_NDELAY) Err#2 ENOENT
18679: poll(0xFFBEEEE8, 1, 0) = 0
18679: write(1, " 2 O K C o m p l e t".., 16) = 16
18679: time() = 1057743623
18679: poll(0xFFBEEEE8, 1, 1800000) (sleeping...)
--
Andrew McNamara, Senior Developer, Object Craft
http://www.object-craft.com.au/
More information about the Info-cyrus
mailing list