I thought we were already checking for CMT installation and enabling the kernel crypto ? At least it was there in Cool Stack. If you're adding that, we should automatically also bump up the ServerLimit and MaxClients for CMT. This is simple to do in a postinstall script.
Shanti On 02/18/09 09:21, Basant Kumar kukreja wrote: > +1 for production ready configuration. > > Just a note that it is sometimes difficult to come up with a common production > config for different kind of servers. For example, ServerLimit and MaxClients > ServerLimit 2048 > MaxClients 2048 > > For a larger system like CMT systems with more memory, these tunables can be > higher. Ideally it should be self tunable. For example, in Sun Web Server, we > tune few settings (if unspecified by user) based on Number of CPUs, memory > etc. > > For my above example, if ServerLimit is not specified by user then Webstack's > apache can define these values based on the system it is running on. In > longer > term, we can work on a separate patch, which tunes some configuration > dynamically. > > MPM and keep alive settings are the most common setting which should be tuned > dynamically unless user wants to override it. > > For CMT systems, we can have separate include files too. (Where configuration > for built-in crypto card can be included) > > Regards, > Basant. > > > > On Tue, Feb 17, 2009 at 03:17:00PM -0500, Jeff Trawick wrote: >> Here are some rough notes from thinking about better configs for a >> future OpenSolaris release. The exact content isn't so important in the >> short term as how to package it, but by all means comment on any aspect >> of interest. Please ;) >> >> --/-- >> >> Getting a production-ready Apache configuration in OpenSolaris 2008.11 >> >> The default configuration for Apache and unbundled modules like >> mod_dtrace and >> mod_php enables as many features as practical at the cost of performance. >> >> Several changes are necessary for production configurations to limit the >> memory >> and CPU use. >> >> A. loaded modules >> >> For production, modules shouldn't be loaded if they aren't used, as they >> consume memory and sometimes CPU even if they aren't configured. >> >> Also, the set of loaded modules in a production config shouldn't be based >> directly on which packages are installed. >> >> httpd.conf loads all Apache-provided modules by virtue of these lines in >> the >> configuration: >> >> <IfDefine 64bit> >> Include /etc/apache2/2.2/conf.d/modules-64.load >> </IfDefine> >> <IfDefine !64bit> >> Include /etc/apache2/2.2/conf.d/modules-32.load >> </IfDefine> >> >> Use alternate files production-modules-64.load* and >> production-modules-32.load, >> which load only the following basic set of modules: >> >> mod_authz_host >> mod_log_config >> mod_env >> mod_expires >> mod_headers >> mod_unique_id >> mod_setenvif >> mod_mime >> mod_autoindex >> mod_cgi (prefork MPM) or mod_cgid (worker MPM) >> mod_dir >> mod_actions >> mod_alias >> mod_rewrite >> >> (*These files aren't provided but are easy to create.) >> >> Any additional modules which are required must be added manually. Adding >> further modules should be performed in conjunction with configuring the >> related feature. >> >> httpd.conf also loads several other add-on modules whose packages install >> configuration snippets in /etc/apache2/2.2/conf.d, because of the following >> lines in the configuration: >> >> Include /etc/apache2/2.2/conf.d/*.conf >> >> Reading a directory of .conf files is desireable, but a production config >> shouldn't read that directly since its content depends on which packages >> are installed. >> >> Replace that include with >> >> Include /etc/apache2/2.2/production-conf.d/*.conf >> >> (This directory isn't created when the product is installed.) >> >> Adding LoadModule directives for any additional modules will be done >> only as necessary for features required in the production server. >> >> B. Very basic MPM configuration >> >> The choice of MPM may be based on the exact workload. At a minimum, we >> need to fix the default configuration so that it doesn't allow the web >> server to use too many system resources (processes, memory, swap space). >> >> This section of httpd.conf needs to be removed: >> >> <IfModule prefork.c> >> ListenBacklog 8192 >> ServerLimit 2048 >> MaxClients 2048 >> </IfModule> >> >> Copy samples-conf.d/mpm.conf to production-conf.d; that sample file >> has reasonable, initial defaults for both worker and prefork MPMs. It >> can be modified during later testing as necessary. >> >> C. If you need to enable SSL >> >> load mod_ssl from within production-modules-{32|64}.load >> >> copy samples.d/ssl.conf to production-conf.d and modify for >> your configuration >> >> Is the cipher selection in ssl.conf reasonable? (good combination of >> security + performance?) >> >> MPM implications: Does SSL use heap library extensively, and thus >> perform worse >> with more threads per process? (guess: worker is fine with <= 100 >> threads per child) >> >> D. If you need to enable name-based (non-SSL) virtual hosts >> >> <VirtualHost www.example.com> >> ServerName www.example.com:80 >> >> ... >> </VirtualHost> >> >> define any configuration specific to this vhost, such as log files, >> document root, etc. >> >> If mod_rewrite configuration at global scope should apply to this >> vhost, add "RewriteOptions inherit" within the vhost. >> >> If global scope (outside of any VirtualHost) is not intended for >> use, you can deny access. >> >> MPM implications: none >> E. If you need to enable web server authentication and authorization >> >> (from definitions in LDAP, files, databases, etc.) >> >> Note that some applications handle this internally and don't rely on >> the web server. >> >> MPM implications: which auth methods cache, and which are cross-process? >> (mod_ldap has a shared-memory cache, which should help prefork; but >> pooled server connections are specific to a child process so prefork >> could perform worse) >> >> F. If you need to host PHP applications >> >> if prefork, copy conf.d/php5.2.conf to production-conf.d >> >> if worker, copy samples.d/fcgid.conf to production-conf.d/php-fcgid.conf >> and fix the AddHandler or Location container >> >> MPM implications: >> OpenSolaris mod_php refuses to work in worker MPM, right? >> your PHP applications may use support libraries which aren't >> thread-safe >> >> if a small amount of your load is PHP, memory use can be reduced by >> using >> FastCGI to communicate with a small number of PHP processes, >> instead of >> hosting the PHP application in every Apache process >> >> G. If you need to reverse proxy some requests to another server >> >> MPM implications: pooled connections better utilized with worker >> >> H. If you need to route requests to GlassFish or Tomcat >> >> when to use mod_proxy_ajp vs. mod_proxy_http vs. mod_jk (and how) >> >> MPM implications: pooled connections better utilized with worker >> >> I. If you need to host mod_perl applications >> >> do we have a sample for this? >> >> MPM implications: prefork must be used >> >> J. If you need to enable mod_disk_cache >> >> we need a sample configuration for this to place the cache in an >> appropriate >> place >> >> (not going to cover the 20 million Apache features; just those which are >> commonly needed for production and require more than a few lines in the >> config) >> >> ... >> >> Z. real MPM tuning >> >> among other things: make sure you drive Apache to MaxClients during >> testing >> and survive; otherwise, MaxClients may be too high >> >> don't let MinSpareXXX and MaxSpareXXX be too close to each other, or >> Apache >> will continually create and terminate child processes; the difference >> should be >> a meaningful percentage of normal load (at least 20%?) >> >> use mod_status to monitor utilization of processes/threads to >> determine if >> MaxClients is appropriate >> >> and so on >> >> --/-- >> >> new files that could be installed with Apache as part of these instructions: >> >> /etc/apache2/2.2/httpd-production.conf: >> like httpd.conf but has the changes mentioned above >> >> /etc/apache2/2.2/production-conf.d/: >> new directory where admin places conf snippets to activate features >> within production config >> >> /etc/apache2/2.2/production-conf.d/production-modules-{32|64}.load: >> like conf.d/modules-{32|64}.load, but has just the core which are >> required in just about every production config >> >> Something like this would switch from the default enable-everything >> config to this alternate config: >> >> svccfg -s apache22 setprop httpd/startup_options = astring: >> -f/etc/apache2/2.2/httpd-production.conf >> >> _______________________________________________ >> >> >> webstack-discuss mailing list >> webstack-discuss at opensolaris.org >> http://mail.opensolaris.org/mailman/listinfo/webstack-discuss > _______________________________________________ > > > webstack-discuss mailing list > webstack-discuss at opensolaris.org > http://mail.opensolaris.org/mailman/listinfo/webstack-discuss