The Documentum Interactive Delivery Services (IDS) doesn’t seem to be very popular, at least in my experience, as I haven’t seen that one used in a lot of situations. However, when I did, I always had to increase the IDS Memory, as the default JVM was never enough to process an actual production load.
Memory configuration on Linux
On Linux, it is very easy to do for both the IDS Source and IDS Target, as what is running is simply the Java process. Therefore, you can simply update the shell scripts created by the installer or create your own. On the IDS Source, you can modify the line “USER_MEM_ARGS” inside the file “$CATALINA_HOME/bin/startWEBCACHE.sh“. On the IDS Target, you can create your own start script, which could contain something like:
#!/bin/bash
# IDS Agent Configuration
agent_port="2787"
jvm_mem="-Xms8g -Xmx8g -XX:MaxMetaspaceSize=512m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:G1HeapRegionSize=2m"
jvm_params="-Djava.net.preferIPv4Stack=true -Djava.security.egd=file:///dev/./urandom -Djava.awt.headless=true -Dfile.encoding=UTF-8"
# IDS Agent start command
$JAVA_HOME/bin/java ${jvm_mem} ${jvm_params} -cp "$IDS_HOME/lib/*" \
com.documentum.webcache.transfer.MigAgent \
$IDS_HOME/admin/config/${agent_port}/agent.ini
Preview memory configuration on Windows
But what about Windows? In older IDS versions like 16.7.4 (compatible with Documentum 16.7.1 to 21.1), it was possible to increase the memory by following these steps:
- Open the Registry Editor (regedit)
- Navigate to: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\%IDS_SERVICE_NAME%\Env
- Double-click on the “Values” registry key
- Edit the “jvmoptions” definition with the required sizing, e.g.: jvmoptions=-Xms8g -Xmx8g -Dfile.encoding=UTF-8
- Restart the Windows Service of the same name
Note: %IDS_SERVICE_NAME% is the IDS Service name. It depends on IDS version, port and communication type (secure or not), but it can be something like “OpenTextDocumentumIDS_secure_2787”.
That wasn’t documented initially but after some discussions with OpenText years ago (or was it Dell at the time? I don’t recall), it finally made its way into the documentation at some point, in the “User Guide”, under a section (beautifully) named “If the OutOfMemory error appears on the target”. In any cases, that was working properly.
How it is supposed to work for IDS 16.7.5…
The issue, and the reason for this blog is the IDS 16.7.5 (compatible with Documentum 23.4 to 24.4 (what happened to versions between 21.1 and 23.4? :D)). If you look at the documentation (c.f. IDS User Guide, section 5.13.2), it still mention to apply the exact same steps as what I described above for 16.7.4. But that doesn’t work for IDS 16.7.5, because there is no such “Env” folder in the Registry (it’s replaced by a “Parameters” one) and therefore no such key as “Values” either. The Service definition was changed for IDS 16.7.5 and unfortunately, that brought a bug with it.
As a side note, with IDS 16.7.5, there are a couple of BAT scripts that will be created when you configure a Target Agent. A first one can be used to create the Windows Service (c.f. %IDS_HOME%\admin\config\%PORT%\InstallTargetServices.bat) while the second one is to remove it. The BAT script to create the Windows Service contains its full definition:
@echo off
echo Target Service Installer.
...
set SERVICE_NAME=OpenTextDocumentumIDS_secure_2787
set PR_DISPLAYNAME=!SERVICE_NAME!
set PR_DESCRIPTION=OpenText Documentum Interactive Delivery Services Target Background Service
set TARGET_HOME=D:\ids\target
set AGENTINI_PATH=D:\ids\target\admin\config\2787\agent.ini
set PR_INSTALL=!TARGET_HOME!\product\bin\TargetService.exe
set PR_SERVICEUSER=LocalSystem
...
REM Path to java installation
set PR_JVM=!JAVA_HOME!\bin\server\jvm.dll
set PR_CLASSPATH=!TARGET_HOME!\lib\*
...
REM JVM configuration
set PR_JVMMS=8192m
set PR_JVMMX=8192m
set PR_JVMSS=4000m
set PR_JVMOPTIONS=-Dfile.encoding=UTF-8
REM Install service
...
Before opening the ticket with OpenText, I tried to modify the lines “PR_JVMMS” and “PR_JVMMX” to the needed values and then re-creating the service using the provided scripts. That’s how it is supposed to work, technically/normally… But it looked like it had no impact at all. I also tried to set the JVM size by modifying the line “PR_JVMOPTIONS” from “-Dfile.encoding=UTF-8” to “-Xms8g -Xmx8g -Dfile.encoding=UTF-8” (so with a similar approach to what used to work in 16.7.4 and lower). That also failed and it was even worse as the IDS couldn’t start anymore, it was complaining about some file not found.
Workaround until the patch is available
This is a bug in IDS 16.7.5, as OpenText confirmed after some discussions with them. A next patch should fix it. However, for now, it is possible to configure the IDS Target memory following these steps:
- Open the Registry Editor (regedit.exe)
- Navigate to: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Apache Software Foundation\Procrun 2.0\%IDS_SERVICE_NAME%\Parameters\Java
- Double-click on the “JvmMs” registry key
- Make sure to set the “Base” to “Decimal” (right hand side) and edit the “Value data” with the required sizing, e.g.: 8192
- Repeat steps 3+4 for any other keys like “JvmMx” and “JvmSs“
- Restart the Windows Service of the same name
If you are hit by the bug, which should be the case in IDS 16.7.5, then all 3 values will be 0 by default. To verify if the modification is successful after the service restart, you can open the Resource Monitor (resmon.exe) and look for the PID of the IDS (TargetService.exe) in the Memory tab (c.f. Commit, Working Set, Shareable, Private Memory).