Monthly Archive for September, 2011

Subversion Apache tuning for MS Windows

The use of Apache on Windows amongst our enterprise customers is rare, with the majority opting to host the Subversion Apache servers on one of the flavours of Linux.

In the cases where Windows is the Subversion Apache server’s operating system, it is common that Administrators are plagued with overly high memory consumption by the Apache httpd process, leading in extreme cases to the Apache server shutting down.

All subversion binaries for windows only provide 32-bit versions of Apache. Apache on Windows is run as a single process, with child threads that handle the http connections. This means that the total amount of memory available to Apache on Windows is always limited to 2 Gb. Couple this with known memory leaks for Apache modules, and it becomes easy to see why an Apache Subversion server on Windows is likely to die frequently.

Thankfully there are ways to minimise Apache’s memory hemorrhaging and achieve long term uptime for the Subversion server. What follows are some key Apache configuration directives which are optimal for an Apache Subversion server on Windows:

KeepAlive On

KeepAliveTimeout 15

MaxKeepAliveRequests 500

MaxRequestsPerChild 400

MaxMemFree 8000

Looking at each of the directives in turn:

KeepAlive On – Allows a connection to be re-used for multiple requests. This results in better performance as there is an overhead associated with establishing new connections.

KeepAliveTimeout 15 – close the connection if no new request occurs after 15 seconds. We can increase this value to improve performance for clients – but doing so will keep child threads tied up for longer.

MaxKeepAliveRequests 500 – each connection is allowed to service up to 500 requests before it is closed.

MaxRequestsPerChild 400 – each child thread is allowed to service 400 connections before it is killed.

MaxMemFree 8000 – each thread can keep 8Mb of free memory before it is forced to release it.

The strategy behind the above settings is to limit the life of each thread, so that if there are memory leaks, the memory gets released when the threads are killed.

Depending on the exact distribution of Apache Subversion installed, it is often the case that the default Apache configuration allows each thread to live forever and can keep an unlimited amount of free memory – “not the best”.

After applying the above settings, each thread will service MaxRequestsPerChild * MaxKeepAliveRequests = 200000 requests before being killed, and each thread is forced to relinquish any free memory once they have accumulated 8Mb.

MaxKeepAliveRequests and MaxRequestsPerChild may need to be fine tuned, depending on how users report performance and how much memory is consumed by Apache, the aim being to find an acceptable compromise between data transfer speed and Apache memory size.

Jonathan Paul
WANdisco Sherpa

Our Free Online Training Continues

Our ever popular Subversion training webinars continue today with a course on branching & merging. The training covers everything from “what is a branch?” through to “resolving merge conflicts”.  This is just one in a long list of of our complete free SVN training webinars which established favorites and exciting new sessions for uberSVN that we have just announced. To see details of all eleven webinars in this new series go to http://www.wandisco.com/training/webinars

Here’s the current schedule:

bullet September 1 Branching and Merging
bullet September 22 uberSVN: Team Collaboration & Social Coding
bullet September 29 Subversion Difference
bullet October 13 Branching Options for Development
bullet October 27 uberSVN: Access Control Management
bullet November 10 Managing Subversion Projects
bullet December 1 Subversion Locking
bullet December 15 uberSVN Extensibility

We have also teamed up with CloudBees to show you how to deploy Jenkins with uberSVN. The webinar will be hosted by popular writer Tim Anderson of The Register. Learn how to watch for code changes in Subversion repositories, automatically perform builds, initiate tests, notify users of results, roll changes backward or forward, configure Jenkins to schedule, monitor, and manage external jobs, and perform operations on remote servers. There will also be an opportunity to hear from customers who have deployed uberSVN in production and webinar participants are advised to download Jenkins for uberSVN free of charge through uberApps. This special webinar will take place on Wednesday, September 14 – register now as places are limited: Register Now

avatar

About David Richards

David is CEO, President and co-founder of WANdisco and has quickly established WANdisco as one of the world’s most promising technology companies. Since co-founding the company in Silicon Valley in 2005, David has led WANdisco on a course for rapid international expansion, opening offices in the UK, Japan and China. David spearheaded the acquisition of Altostor, which accelerated the development of WANdisco’s first products for the Big Data market. The majority of WANdisco’s core technology is now produced out of the company’s flourishing software development base in David’s hometown of Sheffield, England and in Belfast, Northern Ireland. David has become recognised as a champion of British technology and entrepreneurship. In 2012, he led WANdisco to a hugely successful listing on London Stock Exchange (WAND:LSE), raising over £24m to drive business growth. With over 15 years' executive experience in the software industry, David sits on a number of advisory and executive boards of Silicon Valley start-up ventures. A passionate advocate of entrepreneurship, he has established many successful start-up companies in Enterprise Software and is recognised as an industry leader in Enterprise Application Integration and its standards. David is a frequent commentator on a range of business and technology issues, appearing regularly on Bloomberg and CNBC. Profiles of David have appeared in a range of leading publications including the Financial Times, The Daily Telegraph and the Daily Mail. Specialties:IPO's, Startups, Entrepreneurship, CEO, Visionary, Investor, ceo, board member, advisor, venture capital, offshore development, financing, M&A