Tech Monger

Programming, Web Development and Computer Science.

Skip to main content| Skip to information by topic

Fix Long Running Resource Heavy Workflows

To keep informatica server platform running smoothly it is important to identify and fix resource bottlenecks. Resource bottleneck will not only slow down other informatica workflows but also harm other applications running on the same server. In previous post we have learned to identify time and resource consuming workflows. Depending upon the environment and criticality of the workflow you can employ one of the below mean to troubleshoot identified workflows.

Checking Logs

To fix workflow it is important to understand why workflow is consuming lot of resources and time. The only way you can find that information is by checking session log. If workflow is running for long period then chances are it would create very big log file which you cannot not open from workflow monitor. But you can always use tail command to read file content on the server.

tail -f 'session-log-file'

Prioritize Workflow Process

If workflow run is critical and cannot be stopped then you can change the niceness of the workflow process. More the nice value lesser the resource utilization. You can set nice value between -20 to 19. For example to make workflow consume less resources you can consider renice process by +5.

renice 5 'workflow-pid' 

Kill Workflow Gracefully

If none of the above solution is working for you then you can get rid of workflow by aborting it from monitor. However if process is not responding (hung workflow) then you can kill the workflow. The best way to kill workflow is to kill very child process of the workflow so that workflow can finish resource cleanup and may be able to recover after aborting child. Use following command to get workflow childs.

pstree -p  'workflow-pid'

Example

Identify all child processes of the workflow.
bash-4.2$ pstree -p 30873
pmdtm(30873)-+-{pmdtm}(30874)
             |-{pmdtm}(30877)
             |-{pmdtm}(30881)
             |-{pmdtm}(30882)
             |-{pmdtm}(30883)
             |-{pmdtm}(30885)
             |-{pmdtm}(30886)
             `-{pmdtm}(30887)
Kill the child process
kill -9 'workflow-child-pid' 
Example
kill -9 30887 

On unix platform you can use ptree 'workflow-pid' to get very child process of workflow.
On window platform you can use task manager ctrl + alt + del to get details about workflow process and end process accordingly.

If killing very child does not recover or abort workflow then kill previous child process (30886) and repeat till you reach workflow process pmdtm(30873).

Tagged Under : Informatica Linux Windows