cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Distributed Job Processors

Distributed Job Processors

We are currently using multiple vault servers with their own dedicated job processors. If there is high demand on one we reroute other job processors to that vault manually to keep the queue low.

An option to pull jobs from multiple vaults would helpful for us – this way we would could save resources by not having to reroute our job processors and can reduce the overall number of machines we need for this task.

This can probably work with adding another server name to the selection, maybe by separated commas in the Job Processor / Administration / settings / Server? Eg.: Server: | fshjw01; esbjw03; atljw99; etc…

 

3 Comments
ThomasRambach
Advisor

I don't know if this helps, but I had a PowerShell script that would rotate the job processors through all the servers we used for the separate vault databases. This would run using a scheduled task in Windows. I haven't used this in awhile, so it may need some updating.

 

##################################
##
## Round Robin Vault Job Processor
##
##################################

## Set the executable path and arguments
$Executable = 'C:\Program Files\Autodesk\Vault Professional 2017\Explorer\JobProcessor.exe'
$StopArgument = '/stop'

## Get the encrypted login credentials
#$VaultCredentials = "VaultUsername"
#$encrypted = Get-Content VaultPassword.txt | ConvertTo-SecureString
#$credential = New-Object System.Management.Automation.PsCredential($VaultCredentials, $encrypted)

$Username = "Administrator"
$Password ="password"

## Set the server and database array #############
$VaultServers =@("ServerName1","ServerName2","ServerName3","ServerName4")
$VaultDatabases = @("VaultDatabase1","VaultDatabase2","VaultDatabase3", "VaultDatabase4")
##################################################


For ($i=0; $i -lt $VaultServers.Length; $i++) {
 
    ## Write out which server is being processed
    Write-Output "Server: " $VaultServers[$i] " Database: " $VaultDatabases[$i]

    ## Stop the Job Processor
    Start-Process -FilePath $Executable -ArgumentList $StopArgument
    Wait-Process -name 'JobProcessor'

    ## Restart the Job Processor
    $StartArgument = '-u ' + $Username + ' -p ' + $Password + ' -s ' + $VaultServers[$i]
    Start-Process -FilePath $Executable -ArgumentList $StartArgument

    ## Wait 1.5 minutes and run the next server
    Wait-Process -name 'JobProcessor' -Timeout 120

    }

 

 

philippelandry4954
Enthusiast

Hello,
When you are working in a replicated environment, the JOBSERVER machines are only executing jobs initiated on the SERVER on which it is connected. If another server JOB queue is overloaded, we have to switch manually the JOBSERVER machine. 

It would be useful and more efficient to let the JOBSEREVR machine to execute any job, whatever the VAULT server on which it is connected and whatever the machine where the job has been initiated from.

I think that this would help us to better handle the jobserver machines and to faster execute the jobs in the queue, reducing the waiting time for all users.

Best Regards

Tags (1)
ThomasRambach
Advisor

I believe with 2023's transactional replication; this shouldn't be an issue anymore. I haven't deployed 2023 yet so I can't confirm.

Can't find what you're looking for? Ask the community or share your knowledge.

Submit Idea