Rehberler Uzun Okuma Configuration

ini dosyanız optimize mi?

uWSGI konfigürasyonunun temel taşları.

21 Şubat 2026 17 dk okuma
Paylaş
X in

Giriş

uWSGI yüzlerce konfigürasyon parametresi sunar; bu esneklik güçlü olsa da yeni başlayanlar için bunaltıcıdır. ini dosyası uWSGI'nin birincil yapılandırma formatıdır; YAML ve XML de desteklenir.

Bu rehber en sık kullanılan parametreleri kategorilere ayırarak açıklar: uygulama yükleme, process yönetimi, ağ, güvenlik ve yaşam döngüsü.

Her parametre için üretim ortamında önerilen değerler ve yaygın hatalar belirtilmiştir.

Uygulama Yükleme Parametreleri

module = myapp.wsgi:application WSGI callable'ı belirtir. chdir proje köküne geçer; virtualenv Python ortamını ayarlar. pythonpath ek modül dizinleri ekler.

lazy-apps = true her worker'ın uygulamayı bağımsız yüklemesini sağlar; global state paylaşımını önler. need-app parametresi uygulama yüklenemezse başlamayı reddeder.

[uwsgi]
chdir = /var/www/myproject
virtualenv = /var/www/myproject/venv
module = myproject.wsgi:application
pythonpath = /var/www/myproject
lazy-apps = true
need-app = true

Process ve Thread Yönetimi

master = true master process etkinleştirir; worker crash'lerinde yeniden başlatma ve graceful reload sağlar. processes worker sayısını, threads her worker'daki thread sayısını belirler.

enable-threads Python thread desteğini açar; Django ORM ve bazı kütüphaneler için gereklidir. Tek process + çok thread I/O-bound işlerde bellek tasarrufu sağlar.

  • processes: CPU sayısına göre (2*CPU)+1
  • threads: I/O-bound için artırın
  • master: her zaman true
  • enable-threads: Django için zorunlu
[uwsgi]
master = true
processes = 4
threads = 2
enable-threads = true
single-interpreter = true

Ağ ve Socket Parametreleri

socket unix domain socket oluşturur; nginx uwsgi_pass ile bağlanır. http-socket doğrudan HTTP dinler (genelde nginx arkasında socket tercih edilir).

chmod-socket ve chown-socket nginx kullanıcısının socket'e erişmesini sağlar. buffer-size büyük request header'ları için artırılabilir.

[uwsgi]
socket = /run/uwsgi/app.sock
chmod-socket = 660
chown-socket = www-data:www-data
buffer-size = 8192
listen = 128

Yaşam Döngüsü ve Temizlik

vacuum = true process sonlandığında socket ve pid dosyalarını temizler. die-on-term = true SIGTERM'de düzgün kapanma sağlar.

max-requests worker'ı belirli istek sayısından sonra yeniler; bellek sızıntısına karşı etkilidir. max-worker-lifetime saniye bazlı alternatiftir.

[uwsgi]
vacuum = true
die-on-term = true
max-requests = 5000
max-requests-delta = 500
reload-on-rss = 512

Güvenlik Parametreleri

uid ve gid drop privileges ile düşürülür; root olarak başlayıp www-data'ya geçiş yapılabilir. harakiri uzun süren istekleri sonlandırır.

limit-as bellek limiti koyar; aşan worker öldürülür. disable-logging hassas ortamlarda log kapatır (debug için önerilmez).

master = true, vacuum = true ve die-on-term = true üçlüsünü her üretim ini dosyasında varsayılan yapın.

Reload ve Deploy

touch-reload dosya değişikliğinde graceful reload tetikler. py-autoreload geliştirme ortamında .py değişikliklerini izler (üretimde kullanmayın).

chain-reload worker'ları tek tek yeniler; sıfır kesinti sağlar. stats unix:/run/uwsgi/stats.sock ile metrik toplama açılır.

[uwsgi]
touch-reload = /var/www/myproject/reload.touch
py-autoreload = 1  # sadece dev
stats = /run/uwsgi/stats.sock
memory-report = true

Sonuç

uWSGI ini dosyası ilk bakışta karmaşık görünse de parametreler mantıksal gruplara ayrılır. Temel bir üretim ini'si 20-30 satırla başlayabilir; ihtiyaçça genişletilir.

Konfigürasyonunuzu versiyon kontrolünde tutun ve staging ortamında test edin. Parametre değişikliği sonrası uwsgi --ini dosya.ini --check-static ile doğrulama yapın.