Search code examples
multithreadingcrashwebspherepollingportal

Polling portlet issue in IBM Websphere Portal


I have a problem diagosing an production issue at work. Basically we have an Intranet Portal site running on IBM Websphere Portal (Version 5 or 6). So pages are pretty much built on composition of different portlets, i.e. News portlet, generic links portlets, graphic image portlets etc. We also have a Polling portlet created for internal users to vote on specific questions. However, there's being an issue with this polling portlet causing an outage of the entire Portal when (I was told) multiple users voting at the same time (or configuring the portlet at the same time) that builds up the number of running threads. I've being trying to duplicate the problem on QA/Test environment with load testing tools (e.g. Fiddler) but failed to reproduce the issue. There's limited amount of information I've being given when they approach me for finding the root cause of the problem in the code. Without being able to duplicate the issue there's no way I'm able to ensure I have fixed the problem.

Could anyone advice what other ways I can go in reproducing the issue? Has anyone ever come across with similar issue before? How did you go about reproducing it?

I'm sorry I can't provide much information apart from describing the problem to you. Cheers


Solution

  • I suspect that what you were told about the Portal outage has to do with Portal Server running out of Web Threads.

    WebSphere Portal is merely an application built on top of WebSphere Application Server. WebSphere Application Server provides the JavaEE runtime itself. To make a long story short, WebSphere Application Server maintains thread pools for certain tasks.

    One of the thread pools is the "Web Container" thread pool. If the value is set to X, then at most X Web requests can be processed at the same time; the X+1th request will have to wait.

    An outage can occur if the thread pool is max'd out and there's a backlog of requests waiting for a thread to be available.

    You should check the size of the Web Container thread pool and take it from there.