Programcının Python ve Redis'in "üçüncü tarafını" keşfi

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

  • Şüpheli No. 1 "Redis-Sunucusu"

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.

  • Şüpheli No. 2 "Redis-py"

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.

  • Suçluyu bulun

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:

  • Yeni geliştirme ortamları, özellikle gömülü ortamlar için, ilgili yapılandırma dosyalarının bütünlüğü sistem aynasında sağlanmalıdır (burada / etc / hosts eksiktir).
  • / Etc / nsswitch dosyası da etki alanı adının çözünürlüğünü etkileyecektir.Varsayılan yapılandırma host: files dns önce / etc / hosts içindeki verileri okuyacaktır.
  • Yerel hizmetler için localhost'a ihtiyacınız yoktur, ancak 127.0.0.1 daha hızlıdır.

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).

Audi'nin yeni A4 Allroad'unun casus fotoğrafları, görünümdeki küçük değişiklikleri ve iç mekandaki büyük değişiklikleri ortaya koyuyor
önceki
Dongfeng Fengshen AX46MT versiyonundaki casus fotoğrafları açığa çıktı
Sonraki
HIS RX 590 seçildi: güç tüketiminin sürprizleri var
Apple Mac simge tasarımının arkasındaki hikaye!
2019'da 18 yeni otomobil piyasaya çıktı
Lotus, Aston Martin Valkyrie'ye karşı yeni bir süper otomobil geliştirmek için Williams ile işbirliği yapacak
25.000 dönümlük güneye bakan 10.000 dönümlük orman parkına bakan inşaat halindedir ... bu yıl Chaoyang büyük ölçekli bir yeşil
Sekizinci nesil i7 mini makine çaylak: 28W güç tüketimi fansız!
40 yıldaki değişiklikleri belgeleyen "Yüzlerce Yabancı Fotoğrafçının Gözünde Pekin" fotoğraf sergisi açılıyor
Beş yıl içinde Android değiştirilecek mi?
Kış Olimpiyatları yanınızda İnternet medyası Pekin Kış Olimpiyatları'nın Zhangjiakou yarışma alanına giriyor
Çarpıcı siyah ve kırmızı renk düzeni Gengsheng RTX 2080 G Soul Geek Edition-8G Unboxing Tour
Medeni seyahat için yeni bir duruş! Bu "on kötü trafik alışkanlığıyla" ilgileniyor musunuz?
Suning blok zincirine girdi; Shandong, yasadışı inşaatı yakalamak için AI kullanıyor; Hindistan, Apple'ın İnternet'ten çekilmesine izin vermeyi planlıyor | Geek Headlines
To Top