Okay, let's see what we can do.
Limesurvey 3 (which is not even in alpha yet) will significantly improve in several areas:
1. Smaller sessions (no longer using sessions as a cache)
2. Real caches (that can be shared per survey instead of per session)
3. Javascript cachable surveys (the survey structure is cached both server side as well as client side and only filled with values during survey taking).
That being said, 100.000 concurrent connections is still too much for any normal setup (of any PHP app) to handle.
Suppose we have 100.000 users doing a survey at the same time, assuming they take approximately 20 seconds to complete a page.
At any second this means 5.000 users are pressing submit.
Assuming the page load time is < 0.1 second (which it is probably not), we have to do 50 seconds of processing time every second. Which means we need 50 cores and 50 php cgi processes (Assuming we run PHP-FPM).
If the requirement is real then there is a simple solution that will work for any type of web application: load balancing. Set up redundant systems and redirect users to one of these.
In general some optimizations might help, but load balancing will always be required to some extent.
- Use PHP-FPM
- Use the latest PHP version
- Use a memory cache (like memcached)
A more experimental but significant performance improvement can be realized using ReactPHP, this will move the bottleneck from CPU to Memory which scales more easily. (Note that LS2 is definitely not ready for this, but LS3 mostly is)
Regarding the request for firefighters, I am available for those kind of jobs, however note that, just like real firefighters, I will try my best but I cannot guarantee your house won't burn down
Contact me via skype sam_mousa for any inquiries!