Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hello,
Our NPrinting usage is growing and currently we have a single node environment where we have 16 core CPU and 200GB RAM server.
We are wanting to create a better environment and wondering what would be better. Make the single node bigger or try and go for a multi-node to manage the load?
In multi-node I was thinking:
- What if we could set-up so that we have 3 nodes each server with 10 CPU cores and 100GB of RAM each. So in total 30 cores and 300GB of RAM.
Is that better than a single node with 30 cores and 300GB RAM?
My thinking is a multi-node can give you better resiliance compared to a single node but on the down-side it's more servers to manage.
I appreciate the answer can "depends" but I am looking for some guidance. Generally the NPrinting server config is OK but we are trying to make it better.
What are your thoughts? What would you favour and why? Any other pros and cons to each approach could also be good as part of the consideration.
First question I normally ask is the license. How many engines does your license cover? Typically it is 1 engine only so in such scenario there is no point talking about multinode.
On the other hand talking purely about benefits I think having more engines would be beneficial as dealing with other processes in multinode environments can be handled better (PDF printing for example).
The last question is why would you need 100 GB of ram? That would be pure waste of resources. Does your NPrinting really need that much ram as it will never use it? Does it get anywhere close to the cap at the moment? People often think NPrinting consumes huge amount of resources, but it is not true - all hard work is done in Qlik Sense/QlikView and NPrinting is only producing reports.
as always pointing to documentation - notice that large NPrinting deployment is the 3 engines (20 CPU and 32 GB ram). The
Hi Lech,
Your post made me read this Help page on Performance: https://help.qlik.com/en-US/nprinting/September2020/Content/NPrinting/DeployingQVNprinting/Performan...
It seems to imply that CPU cores is more important than RAM i.e. the more processors, the better the NPrinting performance. RAM is not as much important.
I guess what I want to know is, it seems that it's the account supplied in the Connection that opens the Qlik Sense app in the Qlik Sense server, interacts with it.
So where exactly does the report building happen, in the NPrinting server?
Let's say you were adhering to the best practices for reports but still experience performance issues, a better option would be to expand the number of CPU cores?
In our environment we only have a license for one engine server but I wonder whether it's better to ask for more engines and when expanding CPU cores, do that by spreading the work in multiple nodes? Would that be better compared to increasing more CPU cores in a single node?
90% of performance is sitting in the Qlik Sense performance.. you can have "super-hyper" NPrinting server but without well working Qlik Sense app you are in no mans land. So focus on Qlik Sense performance is the main thing to do... and worrying about NPrinting performance is the last thing to worry about.
Sure, I still would like to know what the NPrinting server does because the Performance page in Help suggests growing the CPU cores but it's not quite clear how the NPrinting server uses it's resources given that RAM is not used that much.
Again this is how I am reading the Performance help page so just wanting some clarification and understanding.
Open to NPrinting support staff commenting here too.
This is how much I understand. On single server configuration when you run Server and Engine on 1 box CPU is used to run server and cpu's are used to open independent sessions to Qlik Sense by using web renderer in -built browser. 1 CPU core is required to best of my knowledge to run such session. The more cores you have the more parallel sessions you can run. From Qlik Sense point of view 1 CPU is equivalent of a 1 concurrent user using Qlik Sense. Now what happens on NPrinting then.....
What NPrinting server does:
So all those tasks are simple and dont require much of RAM or CPU. Now when you think about it the amount of RAM required for NPrinting reports production is the amount of RAM needed to open, preview etc the largest report x-times, where X is equal to number of CPU. This calculation is not documented nor recommended by Qlik, but always worked for me.
So the assumption would be:
Now with such configuration I can observe what happens on the server when we run reports. Do not get confused by the fact that you would like to trigger 200 reports at the same time, that all of them will run at the same time. NPrinting server will put most of them in the queue and will start production based on available resources. You can monitor behaviour of the server, see CPU and RAM consumption and make adjustments if needed.
Ram and CPU may also depend not only on number of reports produced, but number of users visiting News Stand. At the end NewsStand site is hosted on NPrinitng server and its usage may consume server hardware.
@Lech_Miszkiewicz Your post is very helpful but I'm still confused about some documentation. From Nprinting help page it says: "The amount of RAM required for Qlik NPrinting Engine computers depends on the QlikView documents you use to create reports. On a Qlik NPrinting Engine, each instance of QV.exe opens a single QlikView document. For example, if your Qlik NPrinting Engine server has four CPU cores it means that it runs four QV.exe instances which in turn open four QlikView documents. You need enough RAM to adequately manage these four QlikView documents to ensure good performance."
Does this apply to Qlik Sense as well? I have a 16 core engine so does that mean my QVF will be in RAM 16 times. That would take a lot of RAM: 200MB on disk expanded to maybe 2 GB in RAM then x 16 cores = 32 GB. Is it opening on the Qlik Sense server or the nprinting server?
Hi @mgranillo
No it does not apply to Qlik Sense, in fact it does not apply to all QlikView connections neither.
It is more complex. I will break it down below as it all depends on connections type:
Hope that clarifies it.
cheers