Logları açık olan sourcelerde efsun botu açınca mysqlin şahlanması fixi

  • Konbuyu başlatan Konbuyu başlatan Admin
  • Başlangıç tarihi Başlangıç tarihi
  • Cevaplar Cevaplar 0
  • Görüntüleme Görüntüleme 29

Admin

Metin2Lobby
Yönetici
Founder
Katılım
6 Mayıs 2022
Mesajlar
52,647
Ticaret : 1 / 0 / 0
161247_199532b77f4c129073a48f4317f378af.png
Kod:
// item_attribute.cpp açıyosun ve şunu aratıyorsun // Martysama kullanan kişilerde zaten loglevel var kafasına göre takılsın onlar void CItem::SetForceAttribute(int i, BYTE bType, short sValue) {     assert(i < ITEM_ATTRIBUTE_MAX_NUM);     m_aAttr[i].bType = bType;     m_aAttr[i].sValue = sValue;     UpdatePacket();     Save();     if (bType)     {         const char * pszIP = NULL;         if (GetOwner() && GetOwner()->GetDesc())         {             pszIP = GetOwner()->GetDesc()->GetHostName();         }         LogManager::instance().ItemLog(i, bType, sValue, GetID(), "SET_FORCE_ATTR", "", pszIP ? pszIP : "", GetOriginalVnum());     } } // Şöyle değiştirdin geçtin void CItem::SetForceAttribute(int i, BYTE bType, short sValue) {     assert(i < ITEM_ATTRIBUTE_MAX_NUM);     m_aAttr[i].bType = bType;     m_aAttr[i].sValue = sValue;     UpdatePacket();     Save(); } // Bak o yorumlardaki zeka seviyesi çok yüksek arkadaşım sen yazma diye ben buraya yazıyorum. Ben de biliyorum efsun botu için oraya yeni bir değişken atayım efsun botundayken log tutmasın ama elle atınca tutsun diye ayarlamayı. // Bu konuyu bu sorunu yaşayan arkadaşlar için basit çözüm olarak paylaşıyorum o yorumunu kendine sakla.

Logları Açık Olan Sourcelerde Efsun Botu Açınca MySQL’in Şahlanması Fixi

Metin2 özel sunucularında karşılaşılan yaygın sorunlardan birisi, loglama aktif olan sourcelerde efsun botu kullanıldığında MySQL veritabanının aşırı yüklenmesidir. Bu durum, hem oyun sunucusunun performansını düşürür hem de oyuncuların oyun deneyimini ciddi şekilde etkileyebilir. Bu yazıda, bu sorunun neden kaynaklandığını ve nasıl çözüleceğini detaylı şekilde ele alacağız.

Sorunun Kaynağı Nedir?

Loglama aktif olan Metin2 sourcelerde, efsun (scroll) kullanımı sırasında yapılan her işlem veritabanına yazılır. Özellikle botlar tarafından tekrarlayan efsun işlemleri, binlerce satırlık log kayıtlarına neden olabilir. Bu da MySQL sunucusunda ani yüklenmelere yol açar. Bu işlem tekrarlandıkça, veritabanı bağlantıları artar ve zamanla sistem cevap veremez hale gelebilir.

MySQL’in Şahlanması Ne Anlama Gelir?

MySQL’in şahlanması, veritabanı sunucusunun beklenmedik şekilde yüksek CPU veya RAM tüketimiyle donduğu ya da yanıt vermediği durumlardır. Bu, genellikle çok sayıda eşzamanlı işlem, eksik indeksleme veya loglama gibi işlemlerden kaynaklanabilir. Metin2 özel sunucularda, efsun gibi tekrarlayan işlemler bu durumu tetikleyebilir.

Fix Uygulaması: Loglama Sıklığını Azaltmak

Bu sorunu çözmek için öncelikle loglama mekanizmasında değişiklik yapmak gerekir. Örneğin, efsun kullanımının her seferinde veritabanına yazılması yerine, belirli aralıklarla toplu olarak yazılması sağlanabilir. Bu, veritabanı üzerindeki baskıyı azaltacaktır. Bunun için game_core veya db_core dosyalarında bulunan ilgili fonksiyonlar optimize edilmelidir.

Teknik Çözüm: Trigger Kullanımı ve Queue Sistemi

Daha gelişmiş bir çözüm olarak, loglama işlemleri için bir kuyruk (queue) sistemi kurabilirsiniz. Bu sayede, loglama işlemleri doğrudan veritabanına değil, bir geçici belleğe yazılır ve daha sonra topluca veritabanına aktarılır. Bu sistem, özellikle büyük çaplı Metin2 özel sunucularında ciddi faydalar sağlar. Ayrıca, trigger tabanlı loglama sistemleri ile efsun gibi işlemleri filtreleyip, sadece gerekli olanları loglayabilirsiniz.

Alternatif: Loglama Ayarlarını Değiştirmek

Eğer loglama gerçekten gerekliyse ama sadece belirli olaylar içinse, log seviyesini değiştirebilirsiniz. Örneğin, sadece kritik hatalar loglansın, efsun gibi tekrarlayan işlemler loglanmasın. Bu ayar genellikle game server configuration dosyasında bulunur. Bu şekilde, veritabanı üzerindeki yükü minimize edebilirsiniz.

Sonuç

Metin2 özel sunucularında loglama ve efsun botu kullanımı birbiriyle çatışabilir. Bu sorunu çözmek için loglama sistemini optimize etmek ve veritabanı üzerindeki yükü azaltmak önemlidir. Queue sistemleri, trigger kullanımı ve log seviyesi ayarlamaları gibi teknik çözümlerle MySQL’in şahlanmasını önleyebilirsiniz. Bu fixler, hem sunucu performansını artırır hem de oyuncuların daha stabil bir oyun deneyimi yaşamasını sağlar.


Fix for MySQL Spiking When Enchant Bots Are Active on Sources with Logging Enabled

One of the common issues encountered in Metin2 private servers is the excessive load on the MySQL database when enchant bots are used on sources where logging is active. This situation reduces the performance of the game server and significantly affects players' gaming experience. In this article, we will examine in detail why this issue occurs and how to solve it.

What Causes This Issue?

In Metin2 sources with active logging, every enchant scroll usage is logged into the database. Particularly repeated enchant actions by bots can cause thousands of log entries. This leads to sudden spikes in MySQL server load. As these operations repeat, database connections increase and eventually the system may become unresponsive.

What Does 'MySQL Spiking' Mean?

MySQL spiking refers to unexpected high CPU or RAM consumption, causing the database server to freeze or stop responding. It often stems from too many concurrent processes, missing indexing, or excessive logging operations. In Metin2 private servers, repetitive actions like enchant scrolls can trigger this behavior.

Fix Implementation: Reducing Logging Frequency

To resolve this issue, first adjust the logging mechanism. For example, instead of logging each enchant action directly to the database, logs can be written in bulk at specific intervals. This reduces pressure on the database. To do this, relevant functions within the game_core or db_core files should be optimized.

Advanced Solution: Using Triggers and Queue Systems

As a more advanced solution, you can implement a queue system for logging operations. In this way, logging actions are not written directly to the database but stored temporarily in a buffer and then transferred in bulk. This system provides significant benefits, especially in large-scale Metin2 private servers. Additionally, using trigger-based logging allows filtering enchant-related events so only necessary actions are logged.

Alternative: Adjust Logging Settings

If logging is essential but only needed for specific events, consider adjusting the logging level. For instance, only critical errors may be logged, while repetitive actions such as enchant scrolls are excluded. These settings are typically located in the game server configuration file. This approach helps minimize database load.

Conclusion

Logging and enchant bot usage can conflict in Metin2 private servers. To resolve this, it's important to optimize the logging system and reduce database load. Technical solutions like queue systems, triggers, and logging level adjustments can prevent MySQL spiking. These fixes enhance both server performance and provide players with a more stable gaming experience.
 

Şuan Bu Konuyu Görüntüleyen Kullanıcılar (Toplam : 0, Üye : 0, Misafir : 0)

Benzer konular

Geri
Üst Alt