1) CloudfFlare w wersji darmowej nie da Tobie jakiejkolwiek ochrony (poza próbą ukrycia IP)
2) Czemu oba? Sam nginx lub apache nie wystarczy ?
3) Co rozumiesz "przy 2000 ludzi online" ... ważne jest RPS - szczególnie na content dynamiczny
4) Jakie jest dokładnie źródło ? Co mówią logi nginx/apache? Jakie IP generują ten ruch ? ... "2500 procesów (większość niby mysql)" - problem jest po stronie mysql
5) Nie ma ruchu, nie ma obciążenia.
6) Nie blokujesz "wszystkich", a tylko zwykłych userów, którzy bardziej intensywnie klikają
7) 1 sekunda na zapytanie to naprawdę długo ... loguj zapytania które nie używają indeksów
Sprawdź lepiej logi, czy te "gnojki" to nie jest przypadkiem GoogleBot lub inny indeksujący silnik. Ewidentnie widać, że wąskim gardłem jest MySQL, który prawdopodobnie jest w domyślnej konfiguracji pod względem ilości połączeń, bufforów, cache.