I've been running a small database (MySQL) with a home-made "CMS" all on a windows box and I've been asked to migrate it to a legitimate server (MS SQL Server) and a better CMS. I did the development CMS work in Drupal 8 against the MySQL database.
Now I'm starting to install everything on SQL Server and it is VERY slow. I was running Apache2.4 and PHP7.1, but running the thread-safe version of PHP7. Should I be using the non-thread-safe version? A "Drupal on Windows" guide suggested certain settings for realpath and opcache:
opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.fast_shutdown=1
realpath_cache_size=5M
realpath_cache_ttl=1800
One piece of the instructions I followed was to install wincache. However, wincache is only available for non-thread-safe PHP. I managed to get around it by commenting out two lines of code that called wincache functions, and Drupal did install, but quite slowly. Would the lack of wincache be the source of my performance problem?
I downloaded the non-thread-safe PHP7, mod_fcgid for Apache, and wincache. I have everything running, but it is still slow. Is there an ideal way to interface Apache with SQL Server? When I say slow, I mean a drupal module installation is inserting one record per second. My MySQL setup was doing 4000 records an a couple seconds. it will eventuall die with the error:
[fcgid:warn] [pid 2668:tid 940] (OS 109)The pipe has been ended. : [client ::1:56937] mod_fcgid: get overlap result error,
The Mysql server was on the same laptop as the Apache server, while this SQL Server server is half a state away.