VDS (Sanal Özel Sunucu) üzerinde çalışan web uygulamaları ve veritabanı bağlantıları, bazen nedensiz yere "timeout" hatası verip kullanıcı isteklerini reddeder. Bazı bağlantılar başarısız olur, bazı sayfalar yüklenmez, veya API çağrıları beklenmedik şekilde kesilir. Oysa sunucunun kaynakları (RAM, CPU) normal görünüyor. Bu durumun büyük çoğunluğunun sebebi, bağlantı zaman aşımı (timeout) ayarlarının eksik veya yanlış yapılandırılması olacaktır. Bu makalede, VDS'de timeout sorunlarını nasıl tanıyacağını, hangi ayarları kontrol etmen gerektiğini ve pratik çözümleri öğreneceksin.

Timeout Nedir ve Neden Önemlidir?

Timeout, bir bağlantının açık kalabileceği maksimum süreyi tanımlar. HTTP istekleri, veritabanı sorguları, SSH bağlantıları—hepinin kendine özgü timeout değerleri vardır. Eğer bu süreler çok kısa ayarlanırsa, meşru istekler zaman aşımına uğrayabilir. Çok uzun ayarlanırsa, stale (eski, ölü) bağlantılar sistem kaynaklarını tıkayabilir. VDS'de kaynaklar sınırlı olduğundan, bu dengeyi doğru kurmak kritik önem taşır.

Yaygın Timeout Ayarları ve Kontrol Noktaları

VDS'de timeout sorunlarını çözmek için şu seviyelerdeki ayarları incelemelisin:

  • Apache TimeOut: /etc/apache2/apache2.conf dosyasında TimeOut 300 (varsayılan 300 saniye). Uzun işlemler için bu değeri artırabilirsin, ama aşırı yüksek tutma.
  • Nginx send_timeout: http bloğunda send_timeout 30s; ile yapılandırılır. Düşük ayarlanmışsa fastcgi ya da upstream zaman aşımına uğrar.
  • PHP-FPM request_terminate_timeout: /etc/php/8.x/fpm/pool.d/www.conf dosyasında ayarlanır. Varsayılan 0 (sınırsız) veya belli bir saniye değeri olabilir. Cron joblar, ağır işlemler için daha yüksek set etmelisin.
  • MySQL max_connections ve wait_timeout: Veritabanı bağlantılarının kaç saniye sonra kapanacağını belirler. wait_timeout = 28800 (8 saat) gibi bir değer vardır, ama uygulama bağlantı pooling kullanıyorsa bu azaltılabilir.
  • PHP max_execution_time: php.ini dosyasında ayarlanır. CLI ile web ayrı ayrı yapılandırılabilir (web 30s, CLI 0/sınırsız).

Timeout Sorunlarını Tanılamak

VDS'de timeout problemini tespit etmek için aşağıdaki yöntemleri kullan:

  • Web sunucusu error log: /var/log/apache2/error.log veya /var/log/nginx/error.log dosyasında "timeout", "504", "upstream timed out" gibi ifadeler ara.
  • Uygulama log dosyaları: Node.js, Python, PHP uygulamalarının kendi log dosyalarında bağlantı kesilme mesajlarını kontrol et.
  • Veritabanı slow query log: MySQL'de long_query_time ile yavaş sorguları belirle. Eğer sorgu 20 saniye sürüyorsa ve PHP timeout 10 saniye ise, sorun timeout olacaktır.
  • netstat/ss komutu: ss -ant | grep ESTABLISHED ile açık bağlantıları ve durumlarını gör. TIME_WAIT durumunda çok fazla bağlantı varsa, timeout süresi kısalabilir.

Pratik Çözüm: Timeout Ayarlarının Optimize Edilmesi

VDS'de timeout ayarlarını optimize etmek için şu adımları takip et:

1. Nginx ile FastCGI timeout ayarı:

fastcgi_connect_timeout 10s;
fastcgi_send_timeout 30s;
fastcgi_read_timeout 30s;

Bu değerler işlem türüne göre artırılabilir. Dosya yüklemeleri için client_body_timeout 60s; da önemlidir.

2. PHP-FPM pool ayarı:

request_terminate_timeout = 60 (web için), CLI scripts için `0` (sınırsız) kullan. Ayrıca request_slowlog_timeout = 10 ile yavaş istekleri logla.

3. MySQL bağlantı ayarı:

Eğer connection pooling (örn. ProxySQL, pgBouncer) kullanıyorsan wait_timeout değeri daha düşük olabilir (300-600 saniye). Direkt bağlantı için 28800 kalabilir, ama pooling kullanırsan hiç sorun olmayacaktır.

4. Upstream retry logic ekle:

Nginx'de proxy_next_upstream error timeout; ile timeout durumunda başka sunucuya deneme şansı ver (load balancing senaryolarında).

Timeout ile İlgili Ortak Hatalar

  • Tüm timeout değerlerini aşırı yüksek ayarlamak: Bu, ölü bağlantıların sistem kaynağını tıkamasına neden olur. VDS'de bağlantı sayısı sınırlı olduğundan kritikdir.
  • Farklı seviyelerdeki timeout ayarlarının uyumsuz olması: Nginx 30 saniye, PHP-FPM 5 saniye ayarlanırsa, PHP timeout olacaktır. Tüm seviyeleri uyumlu yapılandır.
  • Sorunun timeout olmadığını kontrol etmeden timeout artırmak: Asıl sorun yavaş sorgu veya bellek sızıntısı olabilir. Log dosyalarını mutlaka kontrol et.

Sonuç

VDS'de timeout sorunları, genellikle hızlı bir şekilde tanı ve düzeltme gerektiren, ama bazen gözden kaçan konfigürasyon hatasıdır. Apache, Nginx, PHP-FPM, MySQL gibi her katmanın timeout ayarlarını anlamak ve uyumlu bir şekilde yapılandırmak, uygulamanın stabiliyetini önemli ölçüde artıracaktır. Eğer VDS'inde sürekli bağlantı sorunları yaşıyorsan, önce bu ayarları kontrol et; çoğu zaman problem bu seviyelerde çözülür. Bogahost'un sağladığı yönetimli VDS hizmetlerinde bu ayarlar önceden optimize edilmiştir, ancak custom yapılandırmalarda mutlaka kontrol etmelisin.