Re: [Dovecot] 100% CPU utilisation
On 7.9.2004, at 03:53, Zoong Pham wrote:
Probably because one of the lines in it is larger then 4096 bytes? Header parser doesn't really like that. I should get that fixed in 1.0-tests..
I just check the problematic mailbox. The maximum line length is 2047 characters. Most of them are around 1300 characters.
Well, could you attach gdb into the process while it's running and get backtrace? ie.:
gdb /usr/local/libexec/dovecot/imap pid bt
I've got the same problem - several IMAP processes are maxed out all the time. This is what the backtraces look like for several of the processes: 0x1c02b0c0 in _mail_tree_truncate () (gdb) bt #0 0x1c02b0c0 in _mail_tree_truncate () #1 0x1c02b60a in mail_tree_delete () #2 0x1c0242a5 in mail_index_expunge () #3 0x1c01473b in maildir_index_rebuild () #4 0x1c0154bf in maildir_index_rebuild () #5 0x1c0155ee in maildir_index_rebuild () #6 0x1c015b25 in maildir_index_sync () #7 0x1c026524 in mail_index_data_get_mmaped () #8 0x1c026a37 in mail_index_init () #9 0x1c026ba9 in mail_index_open () #10 0x1c0133f3 in maildir_storage_save_deinit () #11 0x1c0218a5 in index_storage_init () #12 0x1c011a3f in maildir_get_path () #13 0x1c011ba2 in maildir_get_path () #14 0x1c00b247 in cmd_sort () #15 0x1c00b317 in cmd_status () #16 0x1c00c05c in _client_reset_command () #17 0x1c00c0fa in _client_input () #18 0x1c0398c2 in io_loop_handler_run () #19 0x1c0392cd in io_loop_run () #20 0x1c0111db in main () #21 0x1c008b11 in ___start () #22 0x1c008a87 in __start () #23 0xcfbf2204 in ?? () Error accessing memory address 0x1: Invalid argument.
0x1c02b0c0 in _mail_tree_truncate () (gdb) bt #0 0x1c02b0c0 in _mail_tree_truncate () #1 0x1c02b60a in mail_tree_delete () #2 0x1c0242a5 in mail_index_expunge () #3 0x1c01473b in maildir_index_rebuild () #4 0x1c0154bf in maildir_index_rebuild () #5 0x1c0155ee in maildir_index_rebuild () #6 0x1c015b25 in maildir_index_sync () #7 0x1c026524 in mail_index_data_get_mmaped () #8 0x1c026a37 in mail_index_init () #9 0x1c026ba9 in mail_index_open () #10 0x1c0133f3 in maildir_storage_save_deinit () #11 0x1c0218a5 in index_storage_init () #12 0x1c011a3f in maildir_get_path () #13 0x1c011ba2 in maildir_get_path () #14 0x1c00b247 in cmd_sort () #15 0x1c00b317 in cmd_status () #16 0x1c00c05c in _client_reset_command () #17 0x1c00c0fa in _client_input () #18 0x1c0398c2 in io_loop_handler_run () #19 0x1c0392cd in io_loop_run () #20 0x1c0111db in main () #21 0x1c008b11 in ___start () #22 0x1c008a87 in __start () #23 0xcfbfd634 in ?? () Error accessing memory address 0x1: Invalid argument.
0x1c02b0c0 in _mail_tree_truncate () (gdb) bt #0 0x1c02b0c0 in _mail_tree_truncate () #1 0x1c02b60a in mail_tree_delete () #2 0x1c0242a5 in mail_index_expunge () #3 0x1c01473b in maildir_index_rebuild () #4 0x1c0154bf in maildir_index_rebuild () #5 0x1c0155ee in maildir_index_rebuild () #6 0x1c015b25 in maildir_index_sync () #7 0x1c026524 in mail_index_data_get_mmaped () #8 0x1c026a37 in mail_index_init () #9 0x1c026ba9 in mail_index_open () #10 0x1c0133f3 in maildir_storage_save_deinit () #11 0x1c0218a5 in index_storage_init () #12 0x1c011a3f in maildir_get_path () #13 0x1c011ba2 in maildir_get_path () #14 0x1c00ac43 in _cmd_select_full () #15 0x1c00ada7 in cmd_select () #16 0x1c00c05c in _client_reset_command () #17 0x1c00c0fa in _client_input () #18 0x1c0398c2 in io_loop_handler_run () #19 0x1c0392cd in io_loop_run () #20 0x1c0111db in main () #21 0x1c008b11 in ___start () #22 0x1c008a87 in __start () #23 0xcfbf2370 in ?? () Error accessing memory address 0x1: Invalid argument.
This is taken from the OpenBSD port of 0.99.10. I'd not made any changes to the server, but I am running Postfix as the MTA (which shouldn't allow long lines, ya?)
On Tue, 7 Sep 2004 17:40:57 +0300, Timo Sirainen <tss@iki.fi> wrote:
On 7.9.2004, at 03:53, Zoong Pham wrote:
Probably because one of the lines in it is larger then 4096 bytes? Header parser doesn't really like that. I should get that fixed in 1.0-tests..
I just check the problematic mailbox. The maximum line length is 2047 characters. Most of them are around 1300 characters.
Well, could you attach gdb into the process while it's running and get backtrace? ie.:
gdb /usr/local/libexec/dovecot/imap pid bt
participants (2)
-
Chris Weiss
-
Timo Sirainen