If you move most/all of the actual jobs off to slave nodes on other machines, then the Jenkins server host needs to:
· Interact with the user (minimal hardware requirements if your users don’t use auto-refresh; auto-refresh could greatly increase CPU needs) · Retrieve data, artifacts, and logs from the slave machines (needs good network connectivity and large, fast storage capacity) · Hold data for every build (but not artifacts and logs) in core (requires great gobs of memory) You certainly don’t need one core per slave executor on the master, unless you expect all your jobs to be “chatty” all the time. Generally, capturing the data, logs, and artifacts from a build requires one or two orders of magnitude less CPU time than actually running the build. You’re likely to get bigger speed gains by increasing the speed of your disk than that of your CPU. Every build that your Jenkins server “remembers” will have its data stored on disk and in memory, and its artifacts and logs will remain on disk until and unless requested by a user or another job. If this was the whole story, then memory and disk needs would increase without bounds. However, you can set jobs to only remember a certain number of builds and/or a certain number of days of builds. You can separately limit how many logs and artifacts it will keep. Use this feature judiciously, preferably on every job you define. If you have a need to store results “since the beginning of time”, you have a big problem. At a previous job, I had that and had to parse my build logs and write the data required to a database, only using Jenkins to run builds and not to analyze the results. I currently run Jenkins servers and clients on VMs, and don’t have any problems with them. This might make it easier to do whole-host backups of your Jenkins system (if you have the space for that) for disaster recovery. Any combined master/slave machine can be converted to a slave-only machine without more hardware; you might even be able to increase the number of executors. In terms of server CPU and network use, adding executors to an existing node is slightly less expensive than adding nodes. Finally, you have said that you are running a small number of Jenkins standalone servers. I would suspect that a master-only machine needs no more CPU or disk than a standalone host, and may just need more disk capacity. You should be able to sacrifice one standalone system to serve as the master, and the rest of them can be converted to slave-only hosts. From: jenkinsci-users@googlegroups.com [mailto:jenkinsci-users@googlegroups.com] On Behalf Of David Brooks Sent: Wednesday, November 12, 2014 8:44 AM To: jenkinsci-users@googlegroups.com Subject: Specs for new Master server I have searched the archives and don't see a direct answer to this question. I apologize if this has already been asked and answered. My team currently runs a few Jenkins stand-alone build servers, lots of jobs each, some CI jobs, not a lot of concurrency in builds, but some. I have been asked to migrate our environment to a master/slave setup so the job management can be run from one server. My questions is this: what kind of hardware would a master-only machine need to be successful? The current stand-alone servers will become the slaves. So here are the questions I am starting with: * It seems from what I have read in this and other forums that it is a good idea to have one CPU core per executor. Is this true for the master as well as the server doing the builds? Or can we scale back? * I have also read that the master can become I/O bound while moving the logs and build results around. (I think I have that right but some threads suggest that Jenkins can become CPU bound as a result of being I/O bound, an interaction that I don't fully understand.) The network backbone isn't an issue but I can spec out a variety of different storage solutions. I would obviously like to avoid spending money on storage we don't need but I need to build something that will function. * How much RAM should this master-only machine have? * All of our servers are virtual. That helps in that they can be rescaled if needed, but are there any special considerations that a virtual master introduces that I should know about? * Is there anything that I should be thinking about when converting the stand-alone servers to slaves? I have already modeled the process of getting a Jenkins server to be both a stand-alone server and a slave so that I can do the migration without bringing the servers down. That works fine. But is there anything about being a slave server that would change the system requirements? I know I haven't provided enough details to come up with a spec, and that is sort of intentional. I hope to learn instead how to do the analysis, what the tradeoffs are, what the design considerations are, etc. so I can build the spec. This won't be the last time I have to visit this environment and I would like to build the knowledge and skills necessary to be able to manage it. Thanks for any suggestions! ~ Dave -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscr...@googlegroups.com<mailto:jenkinsci-users+unsubscr...@googlegroups.com>. For more options, visit https://groups.google.com/d/optout. Click here<https://www.mailcontrol.com/sr/p!fUEiNMhaHGX2PQPOmvUkWM85sEKD4+D6Lwpry0Oxo!FtZi7dOxJosDGAD0hjxQDZBLv8O0BTRzr!jqbv!p6A==> to report this email as spam. ________________________________ This e-mail and the information, including any attachments it contains, are intended to be a confidential communication only to the person or entity to whom it is addressed and may contain information that is privileged. If the reader of this message is not the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the sender and destroy the original message. Thank you. Please consider the environment before printing this email. -- You received this message because you are subscribed to the Google Groups "Jenkins Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to jenkinsci-users+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.