This article is now available in our new Knowledge Base: Adjust Apache threads on IBM i to improve performance
There are many settings and circumstances that can affect performance for your web site on IBM i. One factor that can occasionally cause a severe slow down on your site is running out of threads. The default setting of 40 threads is usually sufficient, but if there are performance issues with the site, this is one thing you can check.
One symptom of insufficient threads may be missing entries from the access log. If the access log stops recording access attempts during the period of time when the site is not responsive, this can indicate there were no available threads to process the logging.
Any supported version of Zend Server for IBM i, running on any supported version of IBM i.
Please take a look when the web site performance seems to be slow, to see what your thread usage is. When performance is OK, you may not see a lot of Active Threads, and so will not get the best picture of what needs to be done.
Please go to the HTTP Admin in your browser (the IBM HTTP Server *ADMIN instance needs to be running):
http://<your IBM i IP address>:2001/HTTPAdmin/
Find the ZENDPHP7 (or ZENDSVR6 for versions 6 through 8.5) link under the Manage - All Servers tab, and click it. This should bring you to a page with the heading "Manage Apache server "ZENDPHP7"". On the left, there is a long menu of selections. Almost at the bottom, under Tools (you may need to expand the Tools category), please find and click "Real Time Server Statistics".
On the page that appears, under the General tab, look at Active Threads and Idle Threads. Adding Active and Idle tells the Total threads. The default for Total Threads is 40. If you have very few idle threads, you may occasionally be running out of threads, which could cause a hang up. You can refresh the screen manually, or set the refresh interval in the Refresh Interval drop down, to watch these statistics for a while and see if the idle threads are very low, or if they ever drop to zero. If so, you can increase the threads using the ThreadsPerChild directive in the Apache configuration to give Apache more threads to work with. The default can be changed in the HTTP Admin by going to Advaced -> Settings tab, and adjusting Number of Threads Maximum.