|
|
################################################################################
|
|
|
# RhodeCode VCSServer with HTTP Backend - configuration #
|
|
|
################################################################################
|
|
|
|
|
|
|
|
|
[server:main]
|
|
|
## COMMON ##
|
|
|
host = 127.0.0.1
|
|
|
port = 9900
|
|
|
|
|
|
###########################################################
|
|
|
## WAITRESS WSGI SERVER - Recommended for Development ####
|
|
|
###########################################################
|
|
|
|
|
|
#use = egg:waitress#main
|
|
|
## number of worker threads
|
|
|
#threads = 5
|
|
|
## MAX BODY SIZE 100GB
|
|
|
#max_request_body_size = 107374182400
|
|
|
## Use poll instead of select, fixes file descriptors limits problems.
|
|
|
## May not work on old windows systems.
|
|
|
#asyncore_use_poll = true
|
|
|
|
|
|
|
|
|
##########################
|
|
|
## GUNICORN WSGI SERVER ##
|
|
|
##########################
|
|
|
## run with gunicorn --log-config vcsserver.ini --paste vcsserver.ini
|
|
|
|
|
|
use = egg:gunicorn#main
|
|
|
## Sets the number of process workers. More workers means more concurrent connections
|
|
|
## RhodeCode can handle at the same time. Each additional worker also it increases
|
|
|
## memory usage as each has it's own set of caches.
|
|
|
## Recommended value is (2 * NUMBER_OF_CPUS + 1), eg 2CPU = 5 workers, but no more
|
|
|
## than 8-10 unless for really big deployments .e.g 700-1000 users.
|
|
|
## `instance_id = *` must be set in the [app:main] section below (which is the default)
|
|
|
## when using more than 1 worker.
|
|
|
workers = 2
|
|
|
|
|
|
## Gunicorn access log level
|
|
|
loglevel = info
|
|
|
|
|
|
## process name visible in process list
|
|
|
proc_name = rhodecode_vcsserver
|
|
|
|
|
|
## type of worker class, currently `sync` is the only option allowed.
|
|
|
worker_class = sync
|
|
|
|
|
|
## The maximum number of simultaneous clients. Valid only for Gevent
|
|
|
worker_connections = 10
|
|
|
|
|
|
## max number of requests that worker will handle before being gracefully
|
|
|
## restarted, could prevent memory leaks
|
|
|
max_requests = 1000
|
|
|
max_requests_jitter = 30
|
|
|
|
|
|
## amount of time a worker can spend with handling a request before it
|
|
|
## gets killed and restarted. Set to 6hrs
|
|
|
timeout = 21600
|
|
|
|
|
|
## The maximum size of HTTP request line in bytes.
|
|
|
## 0 for unlimited
|
|
|
limit_request_line = 0
|
|
|
|
|
|
## Limit the number of HTTP headers fields in a request.
|
|
|
## By default this value is 100 and can't be larger than 32768.
|
|
|
limit_request_fields = 32768
|
|
|
|
|
|
## Limit the allowed size of an HTTP request header field.
|
|
|
## Value is a positive number or 0.
|
|
|
## Setting it to 0 will allow unlimited header field sizes.
|
|
|
limit_request_field_size = 0
|
|
|
|
|
|
## Timeout for graceful workers restart.
|
|
|
## After receiving a restart signal, workers have this much time to finish
|
|
|
## serving requests. Workers still alive after the timeout (starting from the
|
|
|
## receipt of the restart signal) are force killed.
|
|
|
graceful_timeout = 3600
|
|
|
|
|
|
# The number of seconds to wait for requests on a Keep-Alive connection.
|
|
|
# Generally set in the 1-5 seconds range.
|
|
|
keepalive = 2
|
|
|
|
|
|
## Maximum memory usage that each worker can use before it will receive a
|
|
|
## graceful restart signal, e.g 10MB = 10485760 (10 * 1024 * 1024)
|
|
|
# 0 = memory monitoring is disabled
|
|
|
memory_max_usage = 0
|
|
|
|
|
|
## How often in seconds to check for memory usage for each gunicorn worker
|
|
|
memory_usage_check_interval = 60
|
|
|
|
|
|
## Threshold value for which we don't recycle worker if GarbageCollection
|
|
|
## frees up enough resources. Before each restart we try to run GC on worker
|
|
|
## in case we get enough free memory after that, restart will not happen.
|
|
|
memory_usage_recovery_threshold = 0.8
|
|
|
|
|
|
|
|
|
[app:main]
|
|
|
use = egg:rhodecode-vcsserver
|
|
|
|
|
|
pyramid.default_locale_name = en
|
|
|
pyramid.includes =
|
|
|
|
|
|
## default locale used by VCS systems
|
|
|
locale = en_US.UTF-8
|
|
|
|
|
|
|
|
|
## path to binaries for vcsserver, it should be set by the installer
|
|
|
## at installation time, e.g /home/user/vcsserver-1/profile/bin
|
|
|
core.binary_dir = ""
|
|
|
|
|
|
## Custom exception store path, defaults to TMPDIR
|
|
|
## This is used to store exception from RhodeCode in shared directory
|
|
|
#exception_tracker.store_path =
|
|
|
|
|
|
## Default cache dir for caches. Putting this into a ramdisk
|
|
|
## can boost performance, eg. /tmpfs/data_ramdisk, however this directory might require
|
|
|
## large amount of space
|
|
|
cache_dir = %(here)s/rcdev/data
|
|
|
|
|
|
## cache region for storing repo_objects cache
|
|
|
rc_cache.repo_object.backend = dogpile.cache.rc.file_namespace
|
|
|
## cache auto-expires after N seconds (2592000 == 30 days)
|
|
|
rc_cache.repo_object.expiration_time = 2592000
|
|
|
|
|
|
## cache file store path, if empty set automatically to tmp dir location
|
|
|
#rc_cache.repo_object.arguments.filename = /tmp/vcsserver_cache.db
|
|
|
|
|
|
## max size of LRU, old values will be discarded if the size of cache reaches max_size
|
|
|
rc_cache.repo_object.max_size = 100
|
|
|
|
|
|
|
|
|
################################
|
|
|
### LOGGING CONFIGURATION ####
|
|
|
################################
|
|
|
[loggers]
|
|
|
keys = root, vcsserver
|
|
|
|
|
|
[handlers]
|
|
|
keys = console
|
|
|
|
|
|
[formatters]
|
|
|
keys = generic
|
|
|
|
|
|
#############
|
|
|
## LOGGERS ##
|
|
|
#############
|
|
|
[logger_root]
|
|
|
level = NOTSET
|
|
|
handlers = console
|
|
|
|
|
|
[logger_vcsserver]
|
|
|
level = DEBUG
|
|
|
handlers =
|
|
|
qualname = vcsserver
|
|
|
propagate = 1
|
|
|
|
|
|
|
|
|
##############
|
|
|
## HANDLERS ##
|
|
|
##############
|
|
|
|
|
|
[handler_console]
|
|
|
class = StreamHandler
|
|
|
args = (sys.stderr,)
|
|
|
level = DEBUG
|
|
|
formatter = generic
|
|
|
|
|
|
################
|
|
|
## FORMATTERS ##
|
|
|
################
|
|
|
|
|
|
[formatter_generic]
|
|
|
format = %(asctime)s.%(msecs)03d [%(process)d] %(levelname)-5.5s [%(name)s] %(message)s
|
|
|
datefmt = %Y-%m-%d %H:%M:%S
|
|
|
|