• 02-04-2024, 05:53:30
    #1
    Merhabalar,
    Dakikada 200k-300k istek alan bir api yazdırdım. Lakin belirli bir noktadan sonra aşırı derecede işlemciye yük bindiriyor ve maalesef birbirinden bağımsız isteklere aynı cevabı gönderiyor (her değer unique olmasına rağmen).
    Bir çok yolu denedim lakin bu işin hangi dil ve teknolojiyle kurulması hakkında bilgilendirilmeye ihtiyacım var, bu noktada yardımcı olursanız çok sevinirim.
    Bu tip bir iş almış arkadaşlarla da çalışmak istediğimi belirtmek isterim.
  • Kabul Edilen Cevap
    • 2 Beğeni
      iyileştirmeler yapılabilir.

      1. Güçlü bir sunucu kullanmanızı tavsiye ederim trafiği kaldıracak şekilde.
      2. Nginx + PHP FPM ile apache'ye göre çok daha iyi performans alınabilir.
      3. Api laravel ile yazılabilir
      4. Api isteklerin de spam request olabileceğini düşünüyorsanız ihtiyac fazlası kullanım için ve yük binmemesi için rate limit belirlenebilir. dakikada maks şu kadar istek atılabilir aynı kullanıcıdan gibi.
      5. Yoğun mysql ve veritabanı işlemleri yapılıyorsa ve big data mevcut ise postresql yada mariadb biraz daha mysql'e göre big data sorguların da daha stabil ve optimize çalışabilir. Ayrıca db sorguları ve php kodların da ciddi optimizasyon yapılarak performans artışı sağlanabilir index cache ve tekrar eden sorguları optimize ederek.
      6. Kod ile yapılabilecek işlemler de yine aynı şekilde ekstra güvenlikler ve spam engellemeler yapılabilir bu tamamen kodun ve projenin kalitesiyle alakalıdır hiçbir yerde gereksiz sorgular amaca uygun olmayan performansı ve cpu'ya yük bindirecek işlemlerden kaçınılmalı en önemlisi process süreleri olabildiğince hızlı çalışmalı şöyle düşün bir işlemin tamamlanması makina da 15-20 saniye sürüyor ise buna aynı anda 100-200k kişi istek attığında hepsi aynı anda makinada 15-20 saniyelik process'ler çevirirse makina şişer işlemlerin hızlı tamamlanıp yanıt vermeye tekrar müsait olması lazım yapılan işlemlerin process süresi azaltma kodu iyileştirme ve server'in donanım upgrade yaparak olur yukardaki aşamalarla birlikte tüm bunları sağlarsanız ayrıca saldırılara karşıda kesinlikle cloudflare kullanılmalı ve olası gelecek şüpheli işlemlerde block ve WAF rules gibi ekstra güvenlik önlemleride alınmalı.
      7. şuan aklıma gelenler bunlar benden bu kadar : )
  • 02-04-2024, 08:24:05
    #2
    Bu cevap, konu sahibi tarafından kabul edilebilir bir cevap olarak işaretlendi.
    iyileştirmeler yapılabilir.

    1. Güçlü bir sunucu kullanmanızı tavsiye ederim trafiği kaldıracak şekilde.
    2. Nginx + PHP FPM ile apache'ye göre çok daha iyi performans alınabilir.
    3. Api laravel ile yazılabilir
    4. Api isteklerin de spam request olabileceğini düşünüyorsanız ihtiyac fazlası kullanım için ve yük binmemesi için rate limit belirlenebilir. dakikada maks şu kadar istek atılabilir aynı kullanıcıdan gibi.
    5. Yoğun mysql ve veritabanı işlemleri yapılıyorsa ve big data mevcut ise postresql yada mariadb biraz daha mysql'e göre big data sorguların da daha stabil ve optimize çalışabilir. Ayrıca db sorguları ve php kodların da ciddi optimizasyon yapılarak performans artışı sağlanabilir index cache ve tekrar eden sorguları optimize ederek.
    6. Kod ile yapılabilecek işlemler de yine aynı şekilde ekstra güvenlikler ve spam engellemeler yapılabilir bu tamamen kodun ve projenin kalitesiyle alakalıdır hiçbir yerde gereksiz sorgular amaca uygun olmayan performansı ve cpu'ya yük bindirecek işlemlerden kaçınılmalı en önemlisi process süreleri olabildiğince hızlı çalışmalı şöyle düşün bir işlemin tamamlanması makina da 15-20 saniye sürüyor ise buna aynı anda 100-200k kişi istek attığında hepsi aynı anda makinada 15-20 saniyelik process'ler çevirirse makina şişer işlemlerin hızlı tamamlanıp yanıt vermeye tekrar müsait olması lazım yapılan işlemlerin process süresi azaltma kodu iyileştirme ve server'in donanım upgrade yaparak olur yukardaki aşamalarla birlikte tüm bunları sağlarsanız ayrıca saldırılara karşıda kesinlikle cloudflare kullanılmalı ve olası gelecek şüpheli işlemlerde block ve WAF rules gibi ekstra güvenlik önlemleride alınmalı.
    7. şuan aklıma gelenler bunlar benden bu kadar : )
  • 02-04-2024, 09:26:28
    #3
    Clientlere API key dagitabilirsiniz duruma gore eger senaryonuza uyuyorsa. Neler geri donuyorsunuz bilmiyorum ama bazi veriler icin Redis vb. kullanilabilir duruma gore.

    Bunlarin yani sira gelen istekdeki verileri islemeniz uzun suruyorsa RabbitMQ da dusunulebilir.

    Gelen veri, giden veri vesaire daha detayli bir bilgi verirseniz daha isabetli oneriler de yapilabilir.

    Laravel Lumen bu is icin guzel bir alternatif olabilir ornegin.