Skip to main content
Tullamore75
Participating Frequently
April 30, 2018
Question

Opening Acrobat Reader from an App-V 4.6 Sequence causes High CPU/Memory

  • April 30, 2018
  • 5 replies
  • 841 views

We noticed that when Acrobat DC latest version is started from a App-V 4.6 sequence the RdrCEF.exe process starts having trouble. Continuous CPU usage of about 10-17% per user. The process seems to restart continuously. Sometimes the process is a ghost and uses the maximum amount of memory available and still using CPU of about 10-20% per process.

We have tried WSRM but since the CPU usage is continuously changing and a new process id s created, WSRM doesn't keep up.

This is killing for the RDS servers !

When will this be fixed? We have been reading about this issue ever since the first Acrobat Reader DC came out.

This topic has been closed for replies.

5 replies

Tullamore75
Participating Frequently
May 30, 2018

After having contact with Adobe we had to use App-V 5.x for the application (because Adobe does not support App-V 4.6).

We still faced the problem of high CPU and memory on RdrCEF.exe We found following:

- User has opened Acrobat from explorer with a pdf opened

- Now user opens a pdf document from within a App-V 5.x sequence

- New instance of Acrobat is opened...

- RdrCEF.exe starts using 10-30% CPU and a lot of memory

The issue seems to be in how Acrobat is started from the App-V Sequence. When AcroRd32.exe is called with the parameter /N the RdrCEF.exe starts using CPU and memory. If it is started without the parameter /N there is No Problem at all !

We now start de Acrobat from the App-V without the /N and users can set through Adobe Acrobat Properties screen if they want to open on a new TAB or in a new instance.

Tullamore75
Participating Frequently
May 4, 2018

Below a real dirty workaround powershell script.............

#Logging Max 7 days

$limit = (Get-Date).AddDays(-7)

$LogPath = "$env:systemroot\temp\RdrCEF"

$LogName = "RdrCEF--$(get-date -f "yyyy-MM-dd_HH-mm-ss").log"

$log = $LogPath + "\" + $LogName

Get-ChildItem -Path $LogPath -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force

        #Check logdir and create if not exist

        If (-not( Test-Path "$LogPath" )) { New-Item -path "$LogPath" -ItemType Directory}

        #Create file and start logging      

        New-Item -Path $LogPath -Name $LogName –ItemType File

        Add-Content -Path $Log -Value "***************************************************************************************************"      

        Add-Content -Path $Log -Value "[$([DateTime]::Now)] Started processing"

      

####### Vars ############

$Exec="C:\Apps\Adobe\ReaderDC\Reader\AcroCEF\RdrServicesUpdater.exe" # running this with /regserver will stop CPU spikes for RdrCEF.EXE

$Params="/RegServer" # $Exec commandline parameter

$ProcessName = "rdrcef" #Process to watch

$MaxMemory = 3500 # Max Mem usage for $ProcessName

$MaxCPU = 10 # Max CPU usage for $ProcessName

$forCounter = "'\Process($ProcessName)\% Processor Time'" # '\Process(rdrcef)\% Processor Time'

#Main Script

While($true)

{

    $Status = Start-Process $Exec -ArgumentList $Params -PassThru

    If((Get-Counter '\Process(rdrcef)\% Processor Time' -ErrorAction SilentlyContinue).CounterSamples | Where-Object {$_.CookedValue -gt $MaxCPU})

    {

    $i++

    $test=((Get-Counter '\Process(rdrcef)\% Processor Time' -ErrorAction SilentlyContinue).CounterSamples | Where-Object {$_.CookedValue -gt $MaxCPU} | Select-Object CookedValue).CookedValue

    Add-Content -Path $Log -Value "[$([DateTime]::Now)] RdrCEF.exe used $test% of the CPU"

    $Status = Start-Process $Exec -ArgumentList $Params -PassThru

    $Status.WaitForExit()

    Add-Content -Path $Log -Value "[$([DateTime]::Now)] RdrServicesUpdater.exe /RegServer has run"

    }

        #Check High Memory usage RdrCEF.EXE (in MB)

        $t=Get-Process -Name $ProcessName -ErrorAction SilentlyContinue | Select-Object PrivateMemorySize,Id | ForEach-Object -Process {$_.PrivateMemorySize = ($_.PrivateMemorySize)/ 1024kb; $_}

        Foreach($r in $t) {

                    If($r.PrivateMemorySize -gt $MaxMemory) {

                    $r.Id

                    Add-Content -Path $Log -Value "[$([DateTime]::Now)]Process Id:$($r.Id) uses $($r.PrivateMemorySize)MB and will be Stopped"

                        If($(Stop-Process -Id $r.Id -Force) -eq $True){

                        Add-Content -Path $Log -Value "[$([DateTime]::Now)]Process Stopped Succesfully"

                        }

                    }

      

    }

Sleep 5

}

Tullamore75
Participating Frequently
May 2, 2018

Found something but this is not a final solution....!!!

- Starting Acrobat Reader from an App-V 4.6 Sequence

- CPU (RdrCEF.exe) starts using 15-20% CPU

- Run: [INSTALLDIR]..\AcroCEF\RdrServicesUpdater.exe /regserver

- CPU is at 0-1%

- Now as long as you only open a PDF there's no problem.

  If you for example try digitally sign a PDF the CPU directly hits the 15-20% again

- You can repeat the 3rd step and the CPU will drop.

- In the end after repeatin the 3rd step between different actions in Acrobat Reader. The AcroRd32.exe will hang.

The RdrServicesUpdater.exe /regserver will change some stuff in:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Userassist\..

Still looking into the issue here....

Tullamore75
Participating Frequently
May 1, 2018

Installed version is: 18.011.20036 (AcroRdrDC1800920044_nl_NL.exe).

The Issue only seems to occur when Acrobat is started from an App-V 4.6 Sequence not when started directly. So I don't think the mentioned possible firewall solution is the issue.

Legend
April 30, 2018

I observe that RdrCEF is used to show HTML views for things like news, web services in Reader etc. I wild idea is that it fails if blocked by the firewall. Have you tried disabling all online services, enterprises rarely want them. Have you compared classic and continuous tracks? What is your running version (please never say “latest”)?