I don’t know much about SNSs specifically, but basic optimizations (such as the new index canister that Manu mentioned) could technically get you at least partway from 250k to 2M transactions/hour (or from 70 to 500 transactions per second – tps).
Beyond that, one could go with sharding, i.e. distributing the load across multiple canisters and/or subnets. Take a look at the High Performance Ledger project. It aims for 10k tps and already achieved a sustained 5k tps, so another 10x above your aim of 2M transactions/hour.