Search

Language:  
Search for:

Available article translations:

How to recompile Apache, PHP, and IMAP with increased value of file descriptors larger than FD_SETSIZE (1024) on a RedHat-like system

APPLIES TO:
  • Parallels Plesk Panel 11.0 for Linux

Symptoms

RPM packages are compiled by vendors with too few file descriptors (1024), which might cause the following messages to appear in /var/log/httpd/error_log:

Segmentation fault (11)

[warn] make_sock: problem listening on port 443, file descriptor (1068) larger than FD_SETSIZE (1024)

Unable to open logs

Too many open files

This is a common Apache issue on servers with many Virtual Hosts configured. See this article for more information: http://httpd.apache.org/docs/2.0/misc/descriptors.html.

Resolution

NOTE: Since Plesk 8.2.0, up to 900 domains can be hosted on the OS vendor Apache build without the system packages recompilation described in this article. If the Piped Logs feature is enabled on the Plesk server, see 2066.

NOTE: This article is for Linux operating systems that have an RPM packages structure, such as RHEL, Fedora, CentOS, and SuSE.

For details on the Debian system, please see this article.

For details on the FreeBSD system, please see this article.

NOTE: Plesk requires many server applications that are not Plesk software. For example, the Apache web server, MySQL server, PHP module and binaries, and many other items are not compiled by Parallels and are not provided by Parallels; however, standard system RPM packages from the operating system vendor are used by Plesk "as is." This allows the administrator to upgrade and recompile such packages with the desired options. This article is written to help administrators of Plesk configure their OS and system packages that are not included in the Plesk distributive to use with a large number of hosted domains.

You need to recompile related applications and libraries, such as openssl, apache, imap, PHP, etc., from the source RPMs with an increased "FD_SETSIZE" value. Please follow these steps:

Make sure that the system allows you to open enough files:

# /sbin/sysctl fs.file-max
fs.file-max = 131072

If the value of fs.file-max is quite small (several thousand or so), it should be changed by adding the following lines to /etc/sysctl.conf:

fs.file-max = 131072

and running the shell command:

# /sbin/sysctl -w fs.file-max=131072

NOTE: If you are running Virtuozzo, you have to adjust fs.file-max on the Hardware Node and it will be applied to all VEs.

You should have the glibc-kernheaders and glibc-headers packages installed. They can be taken from the operating system distributive CD or from your operating system's download sites. Edit the FD_SETSIZE value in the typesizes.h and posix_types.h files that can be found with the following:

# find /usr/include/ -name typesizes.h
# find /usr/include/ -name posix_types.h

and set it as follows:

#define __FD_SETSIZE 65536

Download the following source RPMs that can be found on your operating system's download sites or similar places. You may use RPM search engines such as http://rpm.pbone.net or http://rpmfind.net:

  • openssl-*.src.rpm
  • httpd-*.src.rpm
  • imap-*.src.rpm
  • php-*.src.rpm
  • libc-client-devel-*.src.rpm (if such RPM is installed)
  • curl-*.src.rpm

Recompile openssl first. For example:

# /usr/bin/rpmbuild --rebuild openssl-0.9.7a-35.src.rpm

Install the compiled openssl RPM with the following command line:

# rpm -Uvh --force /usr/src/redhat/RPMS/i386/openssl-0.9.7a-35.i386.rpm

Repeat the same actions for cURL.

Recompile and install apache:

# rpmbuild --rebuild httpd-2.0.51-2.9.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/httpd-2.0.51-2.9.i386.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/httpd-devel-2.0.51-2.9.i386.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/mod_ssl-2.0.51-2.9.i386.rpm

Recompile and install the libc-client library, which is provided by the imap or libc-client-devel packages (depends on the OS). You must recompile one that is installed in the system. For example:

# /usr/bin/rpmbuild --rebuild imap-2002d-3.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/imap-devel-2002d-3.i386.rpm

or

# /usr/bin/rpmbuild --rebuild libc-client-devel.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/libc-client-devel.rpm

Recompile and install PHP. For example:

# rpmbuild --rebuild php-4.3.10-2.4.src.rpm
# rpm -Uvh --force /usr/src/redhat/RPMS/i386/php-*

Add a ulimit -n 65536 command to the /etc/rc.d/init.d/httpd and /usr/sbin/apachectl apache startup scripts before other commands.

Replace /usr/sbin/suexec with a Plesk one:

# cp /usr/local/psa/suexec/psa-suexec /usr/sbin/suexec
# /etc/init.d/httpd restart

Use the following commands for Plesk versions earlier than 7.5:

# cp /usr/local/psa/suexec/psa-suexec /usr/sbin/suexec
# chown root:apache /usr/sbin/suexec
# chmod 4510 /usr/sbin/suexec
# /etc/init.d/httpd restart

Search words:

Segmentation fault

Too many open files

Unable to open logs

FD_SETSIZE




49af2da0f2dd4c81e962790bbbd0c2b4 56797cefb1efc9130f7c48a7d1db0f0c 06e81f1ab4b5cad9d3f946deecd91752 5d735c0e028ee5b991e4fb80d34fb87f c7658ac2f68d6572a213687c1077afff

FEEDBACK
Was this article helpful?
Tell us how we may improve it.
Yes No
 
 
 
 
 
 
Desktop Virtualization
- Parallels Desktop 8 for Mac
- Parallels Transporter
- Parallels Desktop Switch to Mac Edition
- Parallels Desktop for Mac Enterprise Edition
- Parallels Management-Mac for Microsoft SCCM
Server Virtualization
- Parallels Cloud Server
- Parallels Containers for Windows 6.0 Beta
- Parallels Virtuozzo Containers
Automation
- Parallels Automation
- Parallels Automation for Cloud Infrastructure
- Parallels Business Automation Standard
- Parallels Virtual Automation
- Parallels Plesk Panel Suite
- Web Presence Builder
- Parallels Plesk Automation
- Parallels Small Business Panel
- Value-added Services for Hosters
- Parallels Partner Storefront
Services & Resources
- Cloud Acceleration Services
- Professional Services
- Support Services
- Training & Certification