Various issues related to Apache and the Horde web interface can occur if more than 300 websites on the server are hosted. For example:
"Login failed" message or a blank page in the Horde web interface
Unable to send emails from Horde Webmail
Web sites are not opened properly, they can show:
Unable to connect
The following errors can be found in
[Tue Nov 24 21:18:32.639926 2015] [core:error] [pid 2751] (24)Too many open files: AH02179: apr_socket_accept: (client socket)
Apache does not start, in
/var/log/httpd/error_logthe following error can be found:
Unable to open logs
If you try to host more than 300 websites on the server, Apache may fail to work because of a problem involving the file descriptors limit. By default, Apache can only handle 1024 file descriptors.
Every Virtual Host requires 2 or 4 (if HTTPS is enabled) log files, so with this scheme only around 300 domains can be hosted without an Apache recompilation. See the article #213393589 for more details on recompiling.
Run the following command to see the root of the Apache processes tree:
# ps axf | grep httpd | grep -v grep
2718 ? Ss 0:00 /usr/sbin/httpd
2720 ? S 0:00 \\_ /usr/sbin/httpd
2721 ? S 0:03 \\_ /usr/sbin/httpd
3821 ? S 0:00 \\_ /usr/sbin/httpd
3901 ? S 0:00 \\_ /usr/sbin/httpd
Then check the number of open file descriptors using the root PID (2718):
# ls /proc/2718/fd/ | wc -l
If the returned value is more than 1024 , this means that Apache does not have enough file descriptors and may fail to work correctly.
The Piped Logs feature that was implemented in Plesk 8.2 allows you to host up to 900 domains safely on the default Apache web server. If you have more than 900 domains, you will still have to recompile Apache and certain other system packages as described in the article #213393589 .
To enable Piped Logs in Plesk 11.5 or newer, go to Tools & Settings > Apache Web Server and select the Piped logs check box.
To enable Piped Logs in earlier versions:
- Log in to the server shell.
Issue this command:
# MYSQL_PWD=`cat /etc/psa/.psa.shadow` mysql -u admin psa -e "replace into misc (param,val) values ('apache_pipelog', 'true');"
Rebuild the Apache configuration:
# $PRODUCT_ROOT_D/admin/sbin/websrvmng -v -a