Yazar | Zhou Xiaomao
Baş Editör | Guo Rui
"Programcı Detective:" Eatted "Data" makalesinde, bu denetçi gömülü geliştirme süreci sırasında seri verilerin "kaybolması" sorununu akıllıca çözdü. Hayır, müfettiş kısa süre önce başka bir zor vakayı çözdü. Ahem, müfettiş vakayı geri yüklemeye başlamak üzere, lütfen sabırlı olun ve aşağıdakileri okuyun.
Suç mahallini vur
Canlı resim, Redis verileri girildiğinde yaklaşık 25 saniyelik bir duraklama olduğunu gösteriyor. Burada neler oluyor? Normal durum aşağıdaki gibi olmalıdır.
Sahneyi dikkatlice ele alın
Bu, Python ve Redis ile uygulanan basit bir mesaj kuyruğudur.Rpush ve Lpop komutları, Redis-PY sürücüsü aracılığıyla mesajların kuyruğa alınmasını ve sıralanmasını gerçekleştirmek için kullanılır. Diğer bir özellik ise, bunun yeni bir gömülü geliştirme platformu olmasıdır.
Vaka Analizi
Ana hizmet sağlayıcı olarak Redis-Server, doğal olarak en şüpheli olanıdır.
Bununla birlikte, Redis-Server'ın çeşitli konfigürasyonlarını araştırdıktan sonra, bağlantı sayısı, blok sayısı ve diğer göstergelerin de normal olduğunu ve buna işaret eden doğrudan bir kanıt olmadığını buldum.
Ek olarak, aynı kodun başka bir geliştirme platformundaki "olay" sitesinin Redis-Server'ına uzaktan bağlanması normaldir, bu da Redis-Server'ın masum olduğunu ve geçici olarak şüpheden kurtulduğunu kanıtlar.
Bir hizmet komisyoncusu olarak Redis-py, geçmiş ile sonraki arasında bir bağlantıdır ve şüphe küçük değildir. Redis-py bir üçüncü taraf kitaplığıdır, sürümü ve kurulum yolunu kontrol edin, hepsi normaldir. Github'un Sorunu ve ilgili davalar arandığında, benzer "sabıka kaydı" bulunamadı. Buna ek olarak, ikinci dereceden kanıtlar da vardır: aynı kod diğer ortamlarda normaldir ve olay ortamında uzak Redis-Server'a bağlantı da normaldir.
Bu şekilde Redis-py şüphesi de ortadan kalkar.
Büyük şüpheliler birbiri ardına uzaklaştırıldı ve aniden tekrar kafa karıştırıcı hale geldi ve bir kez daha çıkmaza girdi.
Sessiz olun ve elinizdeki tüm ipuçlarını yeniden okuyun. Çaba karşılığını aldı ve bazı ipuçları buldum. Redis-py kaynak kodunda, bir Soket bağlantısı oluştururken Getaddrinfo'ya bir çağrı bulundu.
Biraz konumlandırma yapın ve burada engellemenin zaman alıcı olduğunu görün. Bu zaman, "Gerçek Cinayet" gün ışığına çıktı.
Ama gizem dağılmadı, diğer ortam neden normal? Bu yerleşik bir Soket modülüdür.Normalde, bu kadar bariz boşluklar olmayacak, yani ... "perde arkasında büyük adamlar" olacaktır.
Önce Getaddrinfo'nun işlevini ve mekanizmasını anlayın:
Getaddrinfo'nun işlevi, ana bilgisayar adını ve hizmet adını soket adres yapısına dönüştürmektir.Normal şartlar altında, / etc / hosts içindeki içeriğin okunmasını optimize edecek ve ardından DNS etki alanı adı hizmeti aracılığıyla iletişim kuracaktır.
Basit bir testi geçelim ve şuna bir göz atalım:
Bu noktada, "suçlu" ortaya çıktı ve / etc / hosts dosyasının içeriği eksikti.
Vaka kapatma özeti
"Dava" nın başarılı bir şekilde çözülmesi, programcı müfettişinin bilge ve dövüş sanatları için elbette vazgeçilmezdir, ancak aynı zamanda programcının bazı sorunlarını da ortaya çıkarır ve kendi boşluklarınızı doldurmanız gerekir.
Referans için birkaç nokta kaydedin:
Feragatname: Bu makale yazar tarafından sunulmuştur ve telif hakkı yazarın kendisine aittir.
"Belgeler için çağrı"
CSDN kamu hesabı, "on milyonlarca teknik insanla büyüme" kavramını destekler. Teknik insanların ilk kez ilgilendiği endüstri odak olaylarını teknik insanların benzersiz bakış açılarından açıklamak için yalnızca "inek başlıkları" ve "konuşma" sütunlarını kullanmakla kalmaz, aynı zamanda "Teknik Başlıklar" sütunu, sektördeki popüler teknolojilerin ve uygulamaların derinlemesine bir yorumunu sunarak, tüm geliştiricilerin teknolojik trendlere ayak uydurmasına, uyanık bir teknolojik anlayışı sürdürmesine ve endüstri trendleri ve teknolojileri hakkında daha kapsamlı bir anlayışa sahip olmasına olanak tanır.
Yüksek kaliteli makaleleriniz veya endüstrinin sıcak olayları, teknoloji trendleri hakkında içgörüler veya derinlemesine uygulama uygulamaları, senaryolar vb. Hakkında yeni içgörüleriniz varsa, lütfen gönderimler için CSDN ile iletişime geçin. İletişim: WeChat (guorui_1118, lütfen gönderim + ad + şirket pozisyonunu not edin), e-posta (guorui@csdn.net).