I have decided to share my test of UD performance hopefully we can address this issue soon.
i have UD hosted in IIS server with 16GB of memory with xeon 4 core processor so there is a plenty of power there.
once i start UD its very fast very responsive no issues.
i have 6 cache endpoint scheduled to collect services , Tasks, etc…
when UD runs the memory starts to build up based on the data generated by these endpoints scheduled.
the time i chose in these endpoints scheduled is the factor that controls how fast the server memory consumption will be.
so for example running these scheduled every 30 seconds is different than running them every 1 hour.
the issue here is we need to run these scheduled every x seconds to be able to get the updated status of an on click command.
i have decided to try to test running these scheduled every 1 day to monitor server performance and the results was as expected UD keep running at full performance since memory consumption was 345MB only but the down side i wont get updated status obviously after an on click command.
BoSen29 created an Invoke-UDEvent which is a great command to use but the problem is after on click when getting the updated status in the grid the button onclick wont do anything.
The main problem i have noticed is if i kept the scheduled endpoints running every x seconds , once the server memory consumption reach 34% (8GB of 16GB) UD is very slow and start seeing these errors in the log file.
02:07:59 [Error] Quartz.Core.JobRunShell Job DEFAULT.1e650830-0591-4994-9d17-23f6ff9d3bd7 threw an unhandled Exception:
02:08:02 [Error] Quartz.Core.ErrorLogger Job DEFAULT.1e650830-0591-4994-9d17-23f6ff9d3bd7 threw an exception.
can we get invoke-udevent command fixed so it will behave the same way endpoint scheduled calling the cache endpoint this way we can keep UD running at best performance and we dont have to setup a scheduled to run every x seconds instead will keep it for example every 1 day and once any user click a button invoke-udevent will call that scheduled endpoint and update the status in the grid.
when we defined an endpoint in UD we are doing it this way
$Services = New-UDEndpoint -Id Test -Schedule $Schedule1 -Endpoint {…}
invoke-udevent -id Test -schedule will call the endpoint itself which means the $Services value didnt get updated.
i have tried to give the button an ID that match object name and based on testing the error dont show again but clicking the button first time will do the work for example
first click will stop a service > grid updated with service stopped
second click to start the stopped service again > stop service executed again
Hi
I think we’re going to need more detail. I’ve never seen this issue, don’t have a problem with memory and yet I have many endpoints, scheduled endpoints, cached data, doing various things from pulling sql data to running actual scripts checking servers, services etc.
Really, before we can just jump to conclusions I think we’d need to see your actual code or at least an example of.
It depends on what you are doing and how you are doing it to get to the root cause of your problem.
It would be also good to see if we can replicate the same issue on another environment
also the idea here is simple, whenever you use cache in UD in a repeated schedule your memory consumption start to increase so the goal here is to eliminate this issue where you dont have to keep generating cache over and over if you can call the schedule manually and maintain your endpoints.
in my environment am using UD community in IIS on a win2019 server, because of the memory consumption occurred by cache objects loop i had to schedule an app pool recycle at 10GB but didnt notice that after hitting 34% of RAM consumption UD will become very slow.
I am the same experience, but not looked that much into it.
My dashboard are also using more and more memory.
Even then it should only be using like 300-400mb og memory. ( it start with that much, and over time get more and more. )
It will get to a stall in performance, and i have to recycle the app pool.
So in my case am doing the same but my issue is the button endpoint change after refresh using invoke-udevent and the buttons becomes unusable.
if you are using cache and you dont have elements such as buttons this command will help you improve the performance of your dashboard.
having an endpoint cache that runs every 10 seconds and collect data will consume memory to a point where when it reaches 35 % of server available memory UD performance get affected.
need a solution to be able to execute the endpoint manually and retain elements like the button functionality.
@wsl2001
I’ll give the Invoke-UDEvent another look today, and verify the bug.
The memory issues you guys are describing however, i haven’t seen since 2.4 myself.
Resolution to my memory issues in my early UD-using days were to ALWAYS do a “| select-object property1, property2 | out-udgriddata” in all my grids and etc.
I found that sending non specified properties to the grid, would result in a memory leak. This might have been patched, but i’ve always done this since the 2.3 days.
@BoSen29
good to see you man , as you have mentioned am using the same idea you just said but here is the issue
am using an endpoint cache to collect services on the system and i cannot use a schedule to run this endpoint once a day , i need it to run every 10 seconds at least to update the status when a user action a start/stop service.
now a s test when i change the schedule to run 1 a day no memory consumption at all but when user action start/stop service nothing will be updated on the grid since you are still reading from the first cache you run once.
when executing the cache every 10 seconds the memory consumption will start build up because a new data is generated every 10 seconds