On Wed, 11 Nov 2015 16:34:33 +0100 Christian Kivalo ml+dovecot@valo.at wrote:
On 2015-11-11 03:44, mancyborg@gmail.com wrote:
On Tue, 10 Nov 2015 08:50:50 +0100 Christian Kivalo ml+dovecot@valo.at wrote:
Hi,
On 2015-11-10 01:44, mancyborg@gmail.com wrote:
Hello dear list, I've recently discovered 'doveadm stats' and I'm trying to use "doveadm stats dump user" and "doveadm stats dump session" to understand the pop/imap users that put more stress on the hard disks.
My problem is that some users refuse to delete their emails from the server, so they keep 20GB of maildir files on the server, the webmail (roundcube) takes forever to open the inbox, the imap searches takes forever and meanwhile all the users wait. (already tried roundcube + memcache(d) but didn't help)
What is forever in your context? I'm using roundcube and a folder with about 78k mails opens in < 1 sec unsorted. A folder with about 37k messages from a mailinglist and thread sort takes < 3 sec. My roundcube shows 200 messages per page by default. On a side note, are you using an imap proxy for roundcube? It doesn't help you with your dovecot problem but it speeds up roundcube.
To speed up imap searches i can recommend to implement fts-solr with dovecot (or maybe fts-elasticsearch, am wanting to try that but solr works...). That will speed up your searches after mailboxes are indexed.
So my problem is not the storage usage itself: I don't care if the user gets tons of emails with big attachments; my problem is when the user opens / searches an imap folder with more than 10K mails and iostat util goes 100% for minutes.
Dovecot should be very quick to open even folders with a huge amount of files due to its indexes.
I'm unable to reproduce any significant numbers in iostat when accessing large mailfolders with roundcube.
Whats your configuration, filesystem, ...
So I've enabled dovecot's stats and enjoying "doveadm stats top", "stats-top.pl" and "doveadm stats dump user/session", but talking about "doveadm stats dump user" and its output fields:
user reset_timestamp last_update num_logins num_cmds user_cpu sys_cpu min_faults maj_faults vol_cs invol_cs disk_input disk_output read_count read_bytes write_count write_bytes mail_lookup_path mail_lookup_attr mail_read_count mail_read_bytes mail_cache_hits
I'm not sure which of those fields can help me and I can't find any relevant documentation.
So here are my questions:
- is there a documentation for those 21 fields and for 'doveadm stats' in general ?
- what's the difference between disk_output, read_bytes, read_count and mail_read_bytes ?
- which field of those is, in your opinion, more representative for expressing the workload that gives me problems ?
- which settings do I need to store 1 week worth of stats ?
I'm currenty using the 'standard' values:
stats_refresh = 30 secs stats_track_cmds = yes stats_memory_limit = 16 M stats_command_min_time = 1 mins stats_domain_min_time = 12 hours stats_ip_min_time = 12 hours stats_session_min_time = 15 mins stats_user_min_time = 1 hours
Can you please tell me the correct parameters to store 1 week of stats ?
For stats somebody else has to jump in, i have only enabled the plugin to see what to get out of it but not made any use of it.
Please share your doveconf -n output
Thank you, Mike
regards christian
By 'forever' I mean more than 1 minute.
That is really long. This should not take that long.
So there is no documentation / manual for 'doveadm stats' ? Do I have to read the source to know which field does what ?
I don't know of more than whats on the dovecot wiki stats plugin page at http://wiki2.dovecot.org/Statistics
I mean the output fields of "doveadm stats dump user":
user reset_timestamp last_update num_logins num_cmds user_cpu sys_cpu min_faults maj_faults vol_cs invol_cs disk_input disk_output read_count read_bytes write_count write_bytes mail_lookup_path mail_lookup_attr mail_read_count mail_read_bytes mail_cache_hits
what's the difference between disk_output, read_bytes, read_count and mail_read_bytes ?
From the wiki page: disk_output: Number of bytes written to disk -> i'd go for disk_input if your interested in reads read_bytes: Number of bytes read using read() syscalls read_count: Number of read() syscalls mail_read_bytes: Number of message bytes read()
Not really much information but a base to start tests from.
Make yourself a testaccount and test. Thats the best way to figure stuff out by yourself.
(sorry to restate the same question, just making sure about it)
Thank you, Mike
Regards Christian
Ok thank you :)