spamassassin-users October 2010 archive
Main Archive Page > Month Archives  > spamassassin-users archives
spamassassin-users: Re: Bayes timeouts and database handle being

Re: Bayes timeouts and database handle being DESTROY'd without explicit disconnect

From: Dominic Benson <dominic_at_nospam>
Date: Tue Oct 19 2010 - 18:17:45 GMT
To: users@spamassassin.apache.org

On 19 Oct 2010, at 17:05, Micah Anderson wrote:

>
> Hello,
>
> I'm running a busy mail server. We've got a bayes database on its own
> server, with InnoDB tables.

What is your total DB size / server RAM? Could you include a snapshot of the output of top from the DB server? I would guess that your problem is indexing/tuning or server capacity MySQL side rather than in SA, but without more data it is just a guess.

>
> I'm seeing a number of these entries in my log files and am struggling
> to determine what could be causing them and how to fix them:
>
> Oct 19 07:02:10 spamd3 spamd[27474]: learn: exceeded time limit in pms learn
> Oct 17 06:30:12 spamd3 spamd[25651]: plugin: eval failed: bayes: (in learn) __alarm__ignore__(15190)
> Oct 17 06:30:42 spamd3 spamd[25598]: plugin: eval failed: bayes: (in learn) child processing timeout at /usr/sbin/spamd line 1283, <GEN1295> line 185.
>
> I get quite a few of these:
>
> Oct 19 07:02:19 spamd3 spamd[18746]: Issuing rollback() for database handle being DESTROY'd without explicit disconnect() at /usr/share/perl5/Mail/SpamAssassin/Plugin/Bayes.pm line 1516, <GEN19133> line 2.
>

If the processing timeout above occurs inside an uncommitted transaction, you will get this.

> and a few of these, although not that many:
>
> Oct 17 12:02:29 spamd3 spamd[6367]: prepare_cached(SELECT max(runtime) from bayes_expire WHERE id = ?) statement handle DBI::st=HASH(0xadbb060)still Active at /usr/share/perl5/Mail/SpamAssassin/BayesStore/SQL.pm line 722

Try an EXPLAIN SELECT max(runtime) from bayes_expire WHERE id = <some value>; as you know it to be slow it might give a clue where to look to improve performance. Or try turning the general query log on for a while and see what queries are taking up time. MonYog is quite a nice frontend to this, but you can do it by hand fairly simply.

>
> Oct 19 05:33:13 spamd3 spamd[1630]: bayes: db_seen corrupt: value='1287482415' for 5d6fb52248450ee7528848c3a78b5a0650a24a31@sa_generated, ignored at /usr/share/perl5/Mail/SpamAssassin/Plugin/Bayes.pm line 397, <GEN18675> line 112.
>
> thanks for any insights!
> micha

Dominic