Hi all

I'm currently moving a TG2.1 app to production and have been doing
some load testing.

I have 10 Instances of the app running behind an nginx server using
reverse proxy technique.

When I reach about 50-60 concurrent users the application becomes
incredibly slow, responding sometimes at 40-50 seconds response time.

My static files have no problem scaling and i'm getting 150ms response
time for 0-100 users no problem as i'm serving them through nginx.

Here is my production.ini file, I'd appreciate it if you could review
it and point out whether i'm overloading something....

Thanks in Advance,
Rotem

#
# #### - Pylons development environment configuration
#
# The %(here)s variable will be replaced with the parent directory of
this file
#
# This file is for deployment specific config options -- other
configuration
# that is always required for the app is done in the config directory,
# and generally should not be modified by end users.

[DEFAULT]
debug = false
# Uncomment and replace with the address which should receive any
error reports
#email_to = [email protected]
smtp_server = localhost
error_email_from = paste@localhost

[server:main]
use = egg:Paste#http
host = 127.0.0.1
port =  %(http_port)s


[sa_auth]
cookie_secret = XXX-XXX-XXXX

[app:main]
use = egg:appname
full_stack = true
#lang = ru
cache_dir = %(here)s/data
beaker.session.key = appname
beaker.session.secret = XXX-XXX
beaker.cache.type = memory


# If you'd like to fine-tune the individual locations of the cache
data dirs
# for the Cache data, or the Session saves, un-comment the desired
settings
# here:
#beaker.cache.data_dir = %(here)s/data/cache
#beaker.session.data_dir = %(here)s/data/sessions

# pick the form for your database
# %(here) may include a ':' character on Windows environments; this
can
# invalidate the URI when specifying a SQLite db via path name
# sqlalchemy.url=postgres://username:password@hostname:port/
databasename
sqlalchemy.url=mysql://appname:jdhfprv@localhost:3306/appname


# If you have sqlite, here's a simple default to get you started
# in development

#sqlalchemy.url = sqlite:///%(here)s/devdata.db
#echo shouldn't be used together with the logging module.
sqlalchemy.echo = false
sqlalchemy.echo_pool = false
sqlalchemy.pool_recycle = 3600

# This line ensures that Genshi will render xhtml when sending the
# output. Change to html or xml, as desired.
templating.genshi.method = xhtml

# if you are using Mako and want to be able to reload
# the mako template from disk during the development phase
# you should say 'true' here
# This option is only used for mako templating engine
# WARNING: if you want to deploy your application using a zipped egg
# (ie: if your application's setup.py defines zip-safe=True, then you
# MUST put "false" for the production environment because there will
# be no disk and real files to compare time with.
# On the contrary if your application defines zip-safe=False and is
# deployed in an unzipped manner, then you can leave this option to
true
templating.mako.reloadfromdisk = true

# the compiled template dir is a directory that must be readable by
your
# webserver. It will be used to store the resulting templates once
compiled
# by the TemplateLookup system.
# During development you generally don't need this option since
paste's HTTP
# server will have access to you development directories, but in
production
# you'll most certainly want to have apache or nginx to write in a
directory
# that does not contain any source code in any form for obvious
security reasons.
templating.mako.compiled_templates_dir = %(here)s/data/templates

# WARNING: *THE LINE BELOW MUST BE UNCOMMENTED ON A PRODUCTION
ENVIRONMENT*
# Debug mode will enable the interactive debugging tool, allowing
ANYONE to
# execute malicious code after an exception is raised.
#set debug = true

# Logging configuration
# Add additional loggers, handlers, formatters here
# Uses python's logging config file format
# http://docs.python.org/lib/logging-config-fileformat.html

#turn this setting to "min" if you would like tw to produce minified
#javascript files (if your library supports that)
toscawidgets.framework.resource_variant=debug

[loggers]
keys = root, appname, sqlalchemy, auth

[handlers]
keys = console

[formatters]
keys = generic

# If you create additional loggers, add them as a key to [loggers]
[logger_root]
level = INFO
handlers = console

[logger_appname]
level = DEBUG
handlers =
qualname = appname

[logger_sqlalchemy]
level = WARN
handlers =
qualname = sqlalchemy.engine
# "level = INFO" logs SQL queries.
# "level = DEBUG" logs SQL queries and results.
# "level = WARN" logs neither.  (Recommended for production systems.)

# A logger for authentication, identification and authorization --
this is
# repoze.who and repoze.what:
[logger_auth]
level = WARN
handlers =
qualname = auth

# If you create additional handlers, add them as a key to [handlers]
[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

# If you create additional formatters, add them as a key to
[formatters]
[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] %
(message)s
datefmt = %H:%M:%S

-- 
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/turbogears?hl=en.

Reply via email to