Recently this blog has been the target of a silly amount of spam comments and I am having trouble keeping it up because of that, so I have disabled comments for now.
4 years ago my blog received about 200 spam comments a month caused me to install Akismet. The spam continued to increase slowly until it got to an average of 2,000 comments a month. Even with this number Akismet was doing a good job and blocking almost all of it, leaving just a handful of comments for me to moderate manually.
Annoyingly things have rocketed now and last month I received 68,897 spam comments. That is around 90 spam comments every hour. This I could still cope with easily, but they tend to come in short waves and I am having trouble keeping my site responsive when that happens. If you have experienced an unexpected wait for up to 20 seconds and them the site just works again, then this is why. Ironically it is using Akismet that is causing the delay, but not using something like this would be clearly be impractical.
The truth be told I do not blog as much as I did, and that most people interact with my blog externally on Twitter and Facebook instead of the comments, so I have just disabled all comments for now. I am considering using nginx instead of Apache to better cope with this kind of traffic, or using a service such as Cloud Flare, but for now I hope disabling comments will keep the site fully responsive all the time.
Update: I am experimenting with some WordPress plugins to block some bot nets before Akismet is called. Fingers crossed this will reduce the spam to a level that my server and Akismet can cope with again. Very few users should be blocked in error but if they are then they can click back, wait a minute, and try again.
I’m beginning to rethink comments on my own blog. I have been using an alternative service to akismet that is soon to be discontinued. I could switch, but similarly to here most of the interaction is now via other channels.
To handle the excessive number of spam comments is there any way to handle them asynchronously? Rather than tying up your web server stack push them to a queue and have a dedicated process checking akismet.