While all of them lead to a 404 Not Found, CPU cycles are wasted in processing these requests ...
Da qualche parte i cicli della CPU "devono essere sprecati" per filtrare queste richieste. Ma dipende dal tipo di richieste e dalla configurazione del server e dell'applicazione quanti cicli saranno e dove esattamente saranno necessari.
Se esiste una chiara fonte di queste richieste è possibile utilizzare semplici regole di filtro dei pacchetti (iptables, ipfw o qualche router davanti al server) per bloccare tali richieste già al livello di trasporto mediante il filtro basato sull'indirizzo IP di origine. Questo sarebbe il modo più economico, cioè meno cicli sono sprecati.
Ma nella maggior parte dei casi non si dispone di una fonte così chiara, quindi il filtraggio deve essere eseguito a livello di applicazione, che è più complesso e quindi richiede più cicli di CPU. Ciò potrebbe essere fatto con un firewall per applicazioni Web (WAF) di fronte al server, filtrando le regole sul server Web o filtrando tali richieste all'interno dell'applicazione Web.
... and affects access by legitimate users at least for a short while.
Mentre qualsiasi server su Internet riceve molte richieste, di solito non è così tanto da influenzare realmente le applicazioni, cioè sono più un fastidio e non costituiscono un rifiuto di servizio. Se la gestione di tali richieste è troppo costosa per te rispetto a quella che potresti dover ripensare alla progettazione della tua applicazione web, ad esempio assicurati che le cattive richieste vengano filtrate in anticipo e non causino ricerche nel database o altre operazioni costose.
Per maggiori dettagli su questo problema, vedi Come posso difendermi da richieste GET dannose?