Fix (APAR): PK31745 Status: Fix Release: 6.0.2.17,6.0.2.15,6.0.2.13,6.0.2.11 Operating System: AIX,HP-UX,i5/OS,Linux,OS/400,Solaris,Windows Supersedes Fixes: CMVC Defect: PK31745 Byte size of APAR: 13280 Date: 2006-12-13 Abstract: An out of memory error or server hang condition may occur Description/symptom of problem: PK31745 resolves the following problem: ERROR DESCRIPTION: Writing data in the UTF8 encoding to a HttpServletResponse OutputStream causes a deadlock in com.ibm.ws.webcontainer.channel.WCChannelLink.writeBuffer(). LOCAL FIX: none PROBLEM SUMMARY USERS AFFECTED: Customers with servers which may process more simultaneous requests than configured webcontainer threads and/or request with large responses. PROBLEM DESCRIPTION: An out of memory error or server hang condition may occur RECOMMENDATION: None 6.0.2.9 and earlier 6.x levels: An out of memory condition may occur when downloading a large file or several large files. When processing a request the webcontainer writes out chunks of response data asynchronously and, when waiting for an asynchronous write to complete, continues to buffer response data into memory. For example, with large responses this can lead to a large memory usage and an out of memory error. 6.0.2.11 to 6.0.2.17: An application server hang may occur when a server is simultaneously processing more requests than webcontainer defined threads. When processing a request the webcontainer writes out the response to the request asynchronously and, when waiting for an asynchronous write to complete, continues to buffer up to 10 chunks of response data into memory. When 10 chunks have been buffered the processing thread waits for the asynchronous write to complete. As a result, in a busy server which is simultaneously processing more requests (which require at least 10 chunks of response data) than the number of configured webcontainer threads, a hang may occur as a result of all threads having 10 buffered chunks of response data and waiting for an asynchronous response to complete, leaving no threads to perform an asynchronous write. Note: By default the chunk size is 32k but this can be changed using the webcontainer custom property 'responsebuffersize'. PROBLEM CONCLUSION: The webcontainer has been changed to write responses either synchronously or asynchronously based on a new webcontainer custom property 'com.ibm.ws.webcontainer.channelwritetype'. If this property is set to 'sync', synchronous writing is used, otherwise asynchronous writing is used (default). Asynchronouswriting is the same behavior as 6.0.2.9 and earlier Version 6 levels. Synchronous writing is the same behavior as Version 5 and Version 4. Behavior notes: com.ibm.ws.webcontainer.channelwritetype=async The webcontainer will use asynchronous writes to write chunks of response data. As a result the maximum amount of response data which may be held in memory is: the size of the response data of every active request Directions to apply fix: NOTE: Choose the: 1) Release the fix applies to 2) The Editions that apply 3) Delete the Editions & Methods that do not apply and this Note Fix applies to Editions: Release 6.0 __ Application Server (Express or BASE) __ Network Deployment (ND) __ WebSphere Business Integration Server Foundation (WBISF) __ Edge Components __ Developer __ Extended Deployment (XD) Install Fix to: Method: __ Application Server Nodes __ Deployment Manager Nodes __ Both NOTE: The user must: * Have Administrative rights in Windows, or be the Actual Root User in a UNIX environments. * Logged in with the same authority level when unpacking a fix, fix pack or refresh pack. * Be at V6.0.2.2 or newer of the Update Installer. This can be checked by reviewing the level of the Update Installer in file /updateinstaller/version.txt. The Update Installer can be downloaded from the following link: http://www.ibm.com/support/docview.wss?rs=180&uid=swg21205991 For detailed instructions to Extract the Update Installer see the following Technote: http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg21205400 1) Copy PKxxxxx.pak file directly to the maintenance directory 2) Shutdown WebSphere Manually execute setupCmdLine.bat in Windows or . ./setupCmdLine.sh in Unix from the WebSphere instance that maintenance is being applied to. 3) Launch Update Installer 4) Enter the installation location of the WebSphere product you want to update. 5) Select the "Install maintenance package" operation. 6) Enter the file name of the maintenance package to install (PKxxxxx.pak file which was copied in the maintenance directory). 7) Install the maintenance package. 8) Restart WebSphere Directions to remove fix: NOTE: * The user must have Administrative rights in Windows, or be the Actual Root User in a UNIX environments. * FIXES MUST BE REMOVED IN THE ORDER THEY WERE APPLIED * DO NOT REMOVE A FIX UNLESS ALL FIXES APPLIED AFTER IT HAVE FIRST BEEN REMOVED * YOU MAY REAPPLY ANY REMOVED FIX Example: If your system has fix1, fix2, and fix3 applied in that order and fix2 is to be removed, fix3 must be removed first, fix2 removed, and fix3 re-applied. 1) Shutdown WebSphere Manually execute setupCmdLine.bat in Windows or . ./setupCmdLine.sh in Unix from the WebSphere instance that uninstall is being run against. 2) Start Update Installer 3) Enter the installation location of the WebSphere product you want to remove the fix. 4) Select "Uninstall maintenance package" operation. 5) Enter the file name of the maintenance package to uninstall (PKxxxxx.pak). 6) UnInstall maintenance package. 7) Restart WebSphere Directions to re-apply fix: 1) Shutdown WebSphere. 2) Follow the Fix instructions to apply the fix. 3) Restart WebSphere. Additional Information: