For us, what you're experiencing really took off in the second week of March. We extended the Who Is Online time period to better see who is attacking us. The attacks come in waves and for us are simply a DDoS attack with wide reaching ramifications. As we close the doors they're coming through, we end up potentially blocking legitimate site traffic. This is why CloudFlare is a big hit with most on here, if you can figure out how to make it work for you. I have not.
Short of that, you might want to sit down to determine what countries your Web site services. Then use .htaccess, assuming your host is or supports Apache, to block traffic from countries you want to sever ties with permanently. Use this code structure to block in the positive (below), where these ARE the countries you wish to block. You can also ALLOW countries in the reverse way, if say you only want a few countries in and for .htaccess to block every thing else no matter what new country it may be.

The code is different, much more simple, for that. Just Google how to alter it correctly, so as not to Fail those country code connections. Each country code is separated by the | pipe symbol. This rewrite Fails all connections that match its criteria.
Code: Select all
GeoIPEnable On
<IfModule mod_geoip.c>
GeoIPEnable On
</IfModule>
<IfModule mod_geoip.c>
RewriteEngine on
RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(AE|AF|AG|AL|AM|AO|AR|AS|AT|AZ|BA|BB|BD|BH|BJ|BN|BO|BR|BS|BT|BW|BY|BZ|CD|CF|CG|CI|CK|CI|CM|CN|CO|CR|CU|CV|CW|CX|CZ...WF|WS|YE|YT|ZM|ZW)$
RewriteRule ^(.*)$ - [F]
</IfModule>
Check your host logs for the most prevalent countries hitting your site. Usually there are filters you can use on your host to analyze traffic by "time."