Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Merhaba,

Sunucunun ram kullanım eşik değerleri belirli saatlerde çok yükseliyor. Bunu tespit edebilmek için birkaç ayar yapmaya çalışıyorum. Bu konuda fikir verebilecek olursa da çok sevinirim.

      $schedule->command('integration:Customer customerName1')
            ->withoutOverlapping($this->overLappingTime)
            ->runInBackground()
            ->hourlyAt('05')
            ->before(function () {
                $this->writeUsageMemory('Customer customerName1', memory_get_usage(true));
            })
            ->after(function () {
                $this->writeUsageMemory('Customer customerName1', memory_get_usage(true));
            })
            ->onFailure(function () {
                $this->writeLog('Customer customerName1');
            });
    // Memory limit hatasına takılan entegrasyonlar genelde bildirilecek
    private function writeLog(string $command)
    {
        Log::notice($command . ' çalışırken hata veriyor.');
    }
    
    private function writeUsageMemory(string $command, int $memory_get_usage)
    {
        DB::connection('mongodb')
            ->table('integration_memory_usage')
            ->insert(['command' => $command,'usage' => $memory_get_usage]);
    }

Bu şekilde memoryi en fazla kullanan process i algılayabilir mi ? Amacım bu görev başlayıp bitene kadar memory kullanımına etkisi ne oldu.

    YalcinSahin Bu tür işlemleri sunucu tarafında monitoring uygulamaları ile halletmeye çalışın.

      YalcinSahin merhaba linux sunucuda en basit top ekranı ile öncelikle hangi uygulamanın yük oluşturduğunu tespit edin. Daha sonra o uygulamaya özel takip yapın. PHP üzerinden bu bilgiyi çok sağlıklı olarak alamazsınız. Sebebi PHP nin koşması içinde bir çok ara birim var.

        mgsmus

        plesk 360 var ama kullanmadım. Önerebileceğiniz bir uygulama mevcut mu ?

        mizraklar

        https://resimyukle.io/r/7v30xHEOL9

        htop ile dataları inceliyorum ama mysql bağlantıları dışında bir değer yok.

        301 mysql connection değeri gösteriyor laravel ile sorgulama yapınca da.

          Database name ........................................................................................................................ Connections  
          mysql ................................................................................................................................... [301] OK  

          YalcinSahin merhaba
          Sistemde çok fazla MySQL işlemi var. Sürekli değişken veri yoksa ön yüzlerde cache kullanım MySQL sadece yazma işlemlerinde kullanılsın.

            mizraklar

            Merhaba,

            Ben sadece background işlerle uğraşıyorum. Sistem üzerinde çok fazla müşteri ve iş var. Hepsi cron job şeklinde çalışıyor ve veritabanı işlemleri oluyor. O yüzden bu kadar bağlantı var.

              YalcinSahin merhaba
              Makina özellikler nedir?
              32 GB gördüm sanki. İşlem hacmi büyük ve cache kullanamıyorsanız sunucuyu büyüteceksiniz.

                mizraklar

                Şimdilik 1 ile 5 arasında bazı işleri çalıştırmayı engelledim.

                        $schedule->command('integration:Customer customer1')
                            ->withoutOverlapping($this->overLappingTime)
                            ->runInBackground()
                            ->hourlyAt(05)
                            ->onFailure(function () {
                                $this->writeLog('Customer-customer1');
                            })
                            ->unlessBetween($this->unlessBetweenStart, $this->unlessBetweenFinish);

                32 gb ram var evet. Aslında sunucu 13 ile 20 gb arasında çalışıyor rutin. Sadece birkaç müşterinin entegrasyonu belirli saatlerde yığılmaya sebebiyet veriyor. Kuyruk içerisinde belirli saatlerde 1 milyon üzerinde iş oluyor. O zaman tıkanıyor sunucu.

                Aynı cron işleyişinde dışarıdan ürün almam gerekli mesela. Ürün okuyabilmem için istek atıp, tutup joba parça parça atıyorum. Bu okumalar aynı süre zarfına gelince memory lerde sıkıntı oluyor.

                Kaynağı xml , restfulapi veya soap servisleri üzerinden alınan dataları ilk okuduğumuzda limitlendirme olmadığı için bu sıkıntı oluyor. Ram'e aşırı yük biniyor.

                Ayrıca bir db sorgusu yazdığımda connectionu disconnect yapmıyorum. 1 kere denedim bu olayı sorguların hepsi patladı 🙂

                  YalcinSahin merhaba
                  Son yazdığını yapmana gerek yok o salt php de kaldı. Query Builder veya eloquent kullanıyorsan onlar hallediyor. Sizin yatay genişleyen yapı kullanmanız lazım bizde anlık 5-10k işlem yapan site var bildiğin web sitesi normal sunucu ile çözemedim küçük alsam yetmiyor, büyük alsam fuzuli masraf. Aws yatay genişleyen sistemlere geçtim şimdi rahatım. Aws ye bayılıyor muyum? Asla ama yük arttığında genişliyor yük düşünce daralıyor (sıcakta genleşen balon 🎈 gibi) 😂