Sunucu iş parçacığı hitch uyarısı: X milisaniye zamanlayıcı aralığı, düzeltme

'server thread hitch warning: timer interval of X milliseconds' görmek? Ne anlama geldiği, nedenleri, profilciyle suçluyu nasıl bulacağınız ve bunu ne zaman yok sayacağınız.

Sunucu konsolunda veya txAdmin'de:

text
server thread hitch warning: timer interval of 1250 milliseconds

Sunucu normalde saniyede birçok kez tik atlar. Bu satır, tikleme işlemi arasındaki bir boşluğun burada 1250 ms olmak üzere çok daha uzun olduğunu söyler. Bu kılavuz, ne anlama geldiğini, olağan nedenleri, profilci ile arkasındaki betiği nasıl bulacağınızı ve bunu ne zaman göz ardı edebileceğinizi kapsar.

Ne anlama geliyor

Sunucu kaynakları bir ana iş parçacığında çalıştırır ve tekrar gelmek için ne kadar zaman aldığını izler. Bir şey bu iş parçacığını meşgul tuttuğunda, sonraki tik geç kalır ve sunucu bu uyarıyı gecikme uzunluğu ile yazdırır.

Oyuncular hitch'i gecikme olarak fark eder: cevap vermesi biraz zaman alan eylemler, geri zıplayan araçlar ve geç gelen olaylar. Tek başına bir sayı çok şey söylemez. Kaç kez göründüğüne ve ne kadar büyük hale geldiğine bakın.

Genel nedenler

  • Ağır sunucu betiği. Tüm oyuncuları, tüm araçları veya büyük bir tabloyu gezen bir döngü, tekrar tekrar çalışır ve iş parçacığını meşgul tutar. Wait(0) olan bir while true do döngüsü sunucuda tipik bir suçludur.
  • Yavaş veritabanı işi. Veritabanına çok fazla veri soran veya çok yavaş bir sorgu çalıştıran bir kaynak, iş parçacığını beklemeye veya büyük bir sonuç işlemesine tutar. oxmysql'nin yazdırdığı yavaş sorgu uyarılarını kontrol edin ve arama yaptığınız sütunlara bir dizin olduğundan emin olun.
  • Çok sayıda varlık. Bir betiğin oluşturduğu ve asla kaldırmadığı binlerce araç, ped veya nesne sunucuyu yükler, özellikle OneSync ile.
  • Yavaş bir makine. Meşgul bir CPU, çekirdeklerini başkalarıyla paylaşan bir VPS, yavaş veya dolu bir disk veya sunucu klasörünüzü tarayıp antivirus, betiğin sorumlu olmadığı gecikme katar.
  • Çok sayıda olay. Saniyede birçok kez her oyuncu için bir olay ateşleyen bir betik her iki tarafta da zaman maliyeti var.
  • Konsol kendisi. Windows'ta, sunucunun konsol penceresinin içine tıklamak işlemi duraklatabilir, çünkü pencere metin seçim moduna girer. Hitch uyarılarınız bir uzun boşluk olarak gelir ve ardından durur, tıklamadığınızı kontrol edin. Pencereyi serbest bırakmak için Enter veya Escape tuşuna basın.

İpucu: uyarının saatini yaptığınız şeylerle karşılaştırın. Birisi belirli bir menüyü her açtığında bir hitch veya her saat aynı dakikada, onu eyleme veya programlanmış göreve bağlayan kaynağa işaret eder.

Profilciyle suçluyu bulun

FiveM'in yerleşik bir profilcisi vardır. Bunu sunucu konsolunda (txAdmin'de Canlı Konsol veya terminaliniz) kullanırsınız. Problem olurken bir dizi kare kaydına başlayın:

text
profiler record 500

Kayıt bittiğinde, kontrol edin ve açın:

text
profiler status
profiler view

Görüntüleyici, hangi kaynakları ve hangi işlevlerin zaman aldığını gösterir. Çubuğu diğerlerinden çok daha uzun olan bir kaynağa bakın, sonra hangi işlevin zamanı harcadığını görmek için işlevlerini açın. Tam komutlar ve yapı versiyonunuzun seçenekleri için FiveM belgelerine bakın, çünkü profilci burada listelenenlerden daha fazla seçeneğe sahiptir, örneğin bir kaydı dosyaya kaydetmek.

Sorunu işin içinde yakalayamazsanız, olurken tekrar kaydedin veya çok sayıda oyuncu çevrimiçi iken. Sunucu boş iken yapılan bir kayıt genellikle faydalı hiçbir şey göstermez.

İkinci bir yol: kaynakları birer birer durdurun

Profilci çıktısını okumak istemediğinizde, eleme yoluyla suçluyu bulun. Sunucu konsolunda:

text
stop my_script

Birkaç dakika bekleyin ve uyarıların durup durmadığını kontrol edin. ensure my_script ile baştan başlatın. Çok fazla döngü içeren kaynaklarla başlayın (işler, HUD'lar, adında "sync" veya "tick" olan herhangi bir şey) ve en yeni eklediğiniz olanlar.

Nedeni düzeltin

  • Ağır döngüler: sunucu döngülerini daha uzun beklemesini sağlayın. Sunucuda neredeyse hiçbir şeyin Wait(0) ihtiyacı yoktur. Wait(1000) veya daha fazla genellikle yeterlidir.
lua
CreateThread(function()
    while true do
        Wait(5000)
        -- check things every 5 seconds, not every tick
    end
end)
  • Veritabanı: yalnızca sonuca ihtiyacınız olan yerlerde await çağrılarını kullanın, bir döngü içindeki sorguları kaçının ve bir sorgu yerine birçok satırı döndüren bir sorgu yazın ve arama yaptığınız sütuna bir dizin ekleyin. büyük bir tablo.
  • Varlıklar: bir betik oluşturduğu ve artık ihtiyaç duymadığı araçları ve nesneleri silin ve kaç tane oluşturabileceğine bir sınır koyun.
  • Donanım: sunucuda birkaç kaynak küçük hitch'lerle ve hiçbir şey öne çıkmıyor, CPU kullanımına, disk alanına ve aynı makinede çalışan diğer programlara bakın.
  • Güncelleme: eski sunucu yapıları performans düzeltmeleri alır. FiveM sunucu yapılarını güncelleyin bölümüne bakın.

Ne zaman yok sayılmalı

Başlangıç sırasında uyarılar beklendik. Sunucu onlarca kaynağı yüklerken, dosyalarını okurken ve veritabanına bağlanırken, iş parçacığı bir an meşguldür ve ilk dakikada bir avuç hitch uyarısı hiçbir şeyin yanlış olduğu anlamına gelmez.

Ayrıca, bir büyük kaynağın yeniden başlatılması sırasında gibi zaman zaman ortaya çıkan nadir, küçük bir sayı (birkaç yüz milisaniye) yok sayın. Oyuncular çevrimiçi iken, tekrar veya saniyeye ulaştığında eylem alın.

Kontrol listesi

Belirti Çözüm
Uyarılar yalnızca ilk dakikada Normal: kaynaklar yükleniyor
Bir büyük uyarı, sonra hiçbir şey Konsol penceresine tıklamadığınızı kontrol edin (Windows)
Oyuncular çevrimiçi iken tekrarlanan uyarılar profiler record 500 ile kaydedin ve profiler view ile okuyun
Bir kaynak öne çıkar Sunucu döngülerini düzeltin veya durdurun ve yazarından sorun
Sorgu ağırlıklı bir eylemden sonra uyarılar Dizin ekleyin ve sorgu sayısını azaltın
Birçok varlık Yapıldıklarında ortaya çıkan araçları ve nesneleri silin
Hiçbir betik öne çıkmaz Makinedeki CPU, disk ve antivirüsü kontrol edin ve yapıları güncelleyin

Kısa yanıtlar

'server thread hitch warning' ne anlama geliyor?

Ana sunucu iş parçacığı zamanında çalışmasına geri dönmedi. Boşluğun ne kadar milisaniye sürdüğünü bildirir ve o sırada oyuncular gecikme veya lastik bantlama hissedebilir.

Sunucu başlangıcında uyarı bir sorun mudur?

Genellikle hayır. Başta birçok kaynak yüklenirken sunucu meşguldür ve ilk dakikadaki birkaç uyarı normaldir. Oyuncular çevrimiçi iken görünen uyarılar hakkında endişe edin.

Ne kadar büyük bir sayı sorundur?

Birkaç yüz milisaniye zaman zaman küçük bir sorun. Saniyeler veya uyarıların sabit bir akışı, bir şeyin sunucuyu engellediği anlamına gelir ve bunu bulmalısınız.

Bu sorunu yaşatmayan scriptler

Crypto MiningBir depo alın, rigleri parça parça kurun ve sürekli hareket eden bir piyasada coin kazın.Scripti gör →CCTV Security CamerasYerleştirilebilir kameralar, canlı çoklu görüntü tableti ve basılı delil fotoğrafları.Scripti gör →Advanced BoostingTabletten araç boosting: D’den S+ sınıfına kontratlar, ekipler ve canlı sıra.Scripti gör →

Okumaya devam edin