• 13-12-2022, 13:04:41
    #1
    Merhaba, PHP ile yaptığımız bir yazılımımızda bir hata ile karşılaşıyoruz. Öncelikle sunucumuz whm cpanel üzerine kuruludur.

    Sistem şöyle tek post işleminde 100-120 adet siteyi döngü içince ftp, mysql işlemleri yaptırıyoruz kod olarak temiz çalışıyor (kodsal bir sorun olsaydı zaten daha farklı hata kodu verirdi.) fakat sunucu mu yoruluyor ne oluyor anlayamadık.

    Aldığımız hata ektedir;



    php.ini ayarları;
  • 13-12-2022, 13:17:17
    #2
    Hocam merhabalar,

    Bu bahsettiğiniz uygulamanıza ait sunucunuz kendi lokasyonunuzda mı ? hosting hizmeti veren x bir firmada mı barındırılıyor.

    Aldığınız hatanın türkçesi şudur. 100-120 adet siteden birine veya birden fazlasına erişim sağlanamıyor. Bunun başlıca sebeplerinden birisi de eğer sunucunuz kendi lokasyonunuzda ise ve belirli bir network yapısı varsa wlan vs. tarzında tanımlamalarınız mevcutsa ve/veya kurum içinde fw kullanılıyorsa belirli sitelere erişim yekisi tanımlanması gerekir. veya tek bir IP adresine ALL yetkisi tanımlanarak sorun çözülebilir.
    Benim internetten arattığımda gördüğüm sorun tamamen bu şekilde yorumladım.

    Eğer ki Barındırma hizmeti veren x bir firma ile çalışıyorsanız firma ile iletişime geçmenizde fayda var. Tahminime göre eş zamanlı olarak 100-120 siteye erişim sağlamaya çalıştığı için çıkan trafiği kısıtlıyor olabilir.

    Bunlar sadece varsayımlarım.
  • 13-12-2022, 13:22:48
    #3
    Hocam tek bir post işlemi ile 100-200 siteyi ftp'den ve mysql'dan güncellemek, sunucunuzun cpu'sunu anlık olarak tüketir. Siz, kodda bir hata yok diyorsunuz ama bu bir hata olmasa da etik bir kod yazımı değil. Size tavsiyem, bu siteleri ve değiştirdiğiniz bilgileri aynı anda değil de 40-50şerli gruplar halinde yapmanız. Bunun için de veritabanınızda bu site bilgilerini tutabilirsiniz. Bir kontrol sütununuz olur. Cron ile kodu tetikler ve 50şerli şekilde işlersiniz. Sonra kontrol sütununuzu 1 yapar 0 olanları devam ettirirsiniz.
    Yani benim görüşüm, sunucunuzun herhangi bir timeout süresi olmadığı için gönderdiğiniz kodu derlemeye çalışıyor ve bu işlem uzun sürdüğü için, cpu bitiyor.
  • 13-12-2022, 13:28:29
    #4
    tahsinyaman adlı üyeden alıntı: mesajı görüntüle
    Hocam merhabalar,

    Bu bahsettiğiniz uygulamanıza ait sunucunuz kendi lokasyonunuzda mı ? hosting hizmeti veren x bir firmada mı barındırılıyor.

    Aldığınız hatanın türkçesi şudur. 100-120 adet siteden birine veya birden fazlasına erişim sağlanamıyor. Bunun başlıca sebeplerinden birisi de eğer sunucunuz kendi lokasyonunuzda ise ve belirli bir network yapısı varsa wlan vs. tarzında tanımlamalarınız mevcutsa ve/veya kurum içinde fw kullanılıyorsa belirli sitelere erişim yekisi tanımlanması gerekir. veya tek bir IP adresine ALL yetkisi tanımlanarak sorun çözülebilir.
    Benim internetten arattığımda gördüğüm sorun tamamen bu şekilde yorumladım.

    Eğer ki Barındırma hizmeti veren x bir firma ile çalışıyorsanız firma ile iletişime geçmenizde fayda var. Tahminime göre eş zamanlı olarak 100-120 siteye erişim sağlamaya çalıştığı için çıkan trafiği kısıtlıyor olabilir.

    Bunlar sadece varsayımlarım.
    Merhaba,
    sunucuda hiç bir firewall koruması yok ikinizin de dediği gibi trafik, cpu sorunu büyük ihtimal.
    @Mhmmd; hocam ek olarak cron demişsiniz fakat cron her zaman çalışan birşey değil mi yani ben işlem yapmadığım haldede oraya istek atıcak her zaman.
  • 13-12-2022, 13:36:54
    #5
    MotikaDijital adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    sunucuda hiç bir firewall koruması yok ikinizin de dediği gibi trafik, cpu sorunu büyük ihtimal.
    @Mhmmd; hocam ek olarak cron demişsiniz fakat cron her zaman çalışan birşey değil mi yani ben işlem yapmadığım haldede oraya istek atıcak her zaman.
    Hocam , sorun tam anlamıyla trafik ile ilgili.
    php.ini içinden max_execution_time sınırını yükseltmek de sonucu değiştirebilir.
    max_execution_time 300
    Bu bir çözüm olabilir,
    DNS lerde sorun olabilir, DNSFLUSH denemenizi de öneririm.

    Eğer VPS’niz Nginx’den yararlanıyorsa, /etc/nginx/conf.d/timeout.conf içerisinde aşağıdaki değerleri arttırmayı deneyin,
    proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600;

    Eğer apachi kullanılıyorsa
    Apache kullanıcıları varsayılan timeout (zaman aşımı) değerini httpd.conf dosyasın içinden yükseltebilirler. Örneğin:
    # Timeout: The number of seconds before receives and sends time out. Timeout 600

    Şimdilik aklıma gelenler bunlar,

    İşlem başlatıldığında sunucu üzerinden cpu kullanımını takip edebiliyorsanız eğer sorunun CPU dan kaynaklı olup olmadığını daha net görebilirsiniz.
  • 13-12-2022, 13:55:12
    #6
    MotikaDijital adlı üyeden alıntı: mesajı görüntüle
    Merhaba,
    sunucuda hiç bir firewall koruması yok ikinizin de dediği gibi trafik, cpu sorunu büyük ihtimal.
    @Mhmmd; hocam ek olarak cron demişsiniz fakat cron her zaman çalışan birşey değil mi yani ben işlem yapmadığım haldede oraya istek atıcak her zaman.
    Hocam, aslında sizin tam olarak nasıl bir mekanizma kurmak istediğinizi tam bilemediğimden, o an aklımdan geldiği gibi yazdım. Elbette cron belirlediğiniz zaman aralığında işlem olsun ya da olmasın o kısmı tetikleyecektir. Ama dakikada bir kez sunucuya işlem var mı yok diye bir istek atması, sunucu zamanı için saniyenin 4/1'ine tekabül eder neredeyse. Ama en azından cpu'nuz hiç bir zaman böyle bir darboğaza girmez. Cron yerine, yaptığınız işlemi sayfalayarak da yapabilirsiniz. işlem yapan kısmı 50'şer 50'şer işleme alın ve sayfa yüklendiğinde (yani işlemler bittiğinde) 2. sayfaya javascript ile yönlendirin. Ama ne yaparsanız yapın bence aynı anda 100-200 siteye işlem yapmayın hocam.
  • 13-12-2022, 13:59:27
    #7
    Mhmmd adlı üyeden alıntı: mesajı görüntüle
    Hocam, aslında sizin tam olarak nasıl bir mekanizma kurmak istediğinizi tam bilemediğimden, o an aklımdan geldiği gibi yazdım. Elbette cron belirlediğiniz zaman aralığında işlem olsun ya da olmasın o kısmı tetikleyecektir. Ama dakikada bir kez sunucuya işlem var mı yok diye bir istek atması, sunucu zamanı için saniyenin 4/1'ine tekabül eder neredeyse. Ama en azından cpu'nuz hiç bir zaman böyle bir darboğaza girmez. Cron yerine, yaptığınız işlemi sayfalayarak da yapabilirsiniz. işlem yapan kısmı 50'şer 50'şer işleme alın ve sayfa yüklendiğinde (yani işlemler bittiğinde) 2. sayfaya javascript ile yönlendirin. Ama ne yaparsanız yapın bence aynı anda 100-200 siteye işlem yapmayın hocam.
    Anladım hocam mesela şöyle olabilir mi işlemler diye bir tablo açsam ben o 100 işlemi oraya kaydettirsem cron her dakika gelip işlem tablosunda yapılmayan işlem varmı diye kontrol edip var ise işleme soksa olabilir mi
  • 13-12-2022, 14:03:45
    #8
    MotikaDijital adlı üyeden alıntı: mesajı görüntüle
    Anladım hocam mesela şöyle olabilir mi işlemler diye bir tablo açsam ben o 100 işlemi oraya kaydettirsem cron her dakika gelip işlem tablosunda yapılmayan işlem varmı diye kontrol edip var ise işleme soksa olabilir mi
    Evet aslında demek istediğim de o. işlemler tablosunda kontrol diye bir sütun olduğunu düşünün. Siz yeni bir işlem eklediğinizde kontrol sütununu tüm siteler için 0 yaparsınız. Sonra cronun işlem yapacağı dosyada her zaman kontrol sütunu 0 olan 50 içerik çağırırsınız (bunu aciliyet durumuna göre daha da düşürebilirsiniz 20-30 gibi). Gelen datalara göre değişiklikler 50 site için yapılır ve yapıldığında o 50 sitenin kontrol sütununu 1 yaparsınız. Bir sonraki cron'da kontrolü 0 olan diğer 50'lik gruba geçer ve bu bitene kadar devam eder. Bittikten sonra da zaten hiç veri olmadığı için cron sadece sorgu atar ve çıkar.