2 puan yazan GN⁺ 2023-07-02 | 2 yorum | WhatsApp'ta paylaş
  • Twitter ana akışı o sabahın büyük bölümünde çökmüş durumdayken, web istemcisinin içerik isteklerini durmadan tekrarlayıp kendi kendine DDOS oluşturuyormuş gibi davrandığı gözlemlendi
  • Ekran yüklenmediğinde bile yeniden denemeler durmadı; ilk videoda rate limited hatası ve titreyen kaydırma çubuğu görülüyor
  • İkinci videoda, hiç gelmeyen içeriği almaya çalışırken Twitter'ın kendisine saniyede yaklaşık 10 istek gönderdiği görülüyor
  • Kısa süre önce uygulanan giriş yapmamış kullanıcılar için okuma sınırının beklenmedik bir koşul yaratmış olabileceği olası neden olarak gösteriliyor
  • Sonraki videonun Firefox ağ konsolunda da isteklerin durmaksızın aktığı görüldü; bunun, kullanıcının tarayıcısının Twitter'a tekrar tekrar istek gönderdiği bir kendi kendine DDOS durumuna dönüştüğü şeklinde yorumlandı

Twitter web istemcisinde görülen tekrarlayan istekler

  • Twitter ana akışı o sabahın büyük bölümünde kapalıydı ve hiçbir şey yüklenmiyorken bile web sitesi istekleri yeniden denemeyi bırakmadı
  • İlk videoda kullanıcının rate limited durumda olduğunu söyleyen hata mesajı ve sağdaki kaydırma çubuğunun titrediği anlar yer alıyor
  • İkinci video, kaydırma çubuğunun neden titrediğini gösteriyor ve Twitter'ın içerik almaya çalışırken kendisine saniyede yaklaşık 10 istek gönderdiği anları içeriyor
  • İçeriğin gelmemesinin arka planında, giriş yapmamış kullanıcıların Twitter'ı okumasını engelleyen değişikliğin olduğu belirtiliyor

Sonraki doğrulama ve ek materyaller

  • Sonraki paylaşım, Firefox ağ konsolu ekranı üzerinden ağ isteklerinin sürekli oluştuğunu ek olarak gösteriyor
  • Dağıtılan kodun bir yarış durumu (race condition) oluşturduğu ve bunun sonucunda kullanıcıların Twitter'a DDOS benzeri istekler göndermesine yol açtığı yorumu yapılıyor
  • Gönderiyi paylaşan kişi, başlangıçta bağlantıyı kapattığını ancak daha sonra Twitter'ın istekleri tetiklemeye devam ettiği durumu bir süre koruduğunu belirtiyor
  • Ekli materyaller:
    • Video 4: rate limited hatası ve titreyen kaydırma çubuğu
    • Video 5: Twitter'ın kendisine tekrar tekrar istek gönderdiği anlar
    • Video 6: Firefox ağ konsolunda isteklerin sürekli oluştuğu anlar

2 yorum

 
GN⁺ 2023-07-02
Hacker News görüşleri
  • Oldukça acı verici kişisel deneyimlerime göre, bunun berbat bir fikir olduğunu açıkça bilirken yine de uygulamaya zorlanmak kadar insanı sarsan az şey vardır
    Özellikle de en iyi yargınıza aykırı hareket etmeniz için baskı yapan kişiye bunu anlatmaya çalışıp başarısız olduğunuzda daha da kötüdür; sonrasında o kişi yazılı kanıt olmasına rağmen böyle bir talepte hiç bulunmadığını yüksek sesle iddia ederse daha da beter olur
    Şu anda Twitter'da çalışan insanların son önlemlerin böyle büyük yan etkilere yol açabileceği konusunda uyarıda bulunup bulunmadığını bilmiyorum ama liderliğin çalışma tarzına bakınca buna hiç şaşırmam
    Son birkaç ayda Twitter'ın dönüştüğü halden hiç hoşlanmıyorum ve satın alma öncesinde de kısa format yüzünden nüansın kaybolması, birkaç kolay gömülebilir tweet'in haberlere dayanak yapılması nedeniyle sevmiyordum; ama böyle bir yönetim altında çalışmak zorunda olan insanlara gerçekten üzülüyorum

    • Twitter'da sistemi anlayan ve yan etkileri öngörebilen herkesin ya kovulmuş ya da ayrılmış olması büyük olasılık
      Tahminimce Elon "site çok yavaş" dedi, mühendisler de ana akış isteklerinin yavaş olduğunu gördü ama yapıyı anlamıyordu, profilleme araçları da yoktu ve gerçekçi olmayan bir süre içinde düzeltmeleri için baskı gördüler
      Bu yüzden yapabilecekleri neredeyse tek şey, birden fazla paralel istek gönderip içlerinden birinin hızlı dönmesini ummak olmuş olabilir
      Oyun sektöründe çalışınca, neden devasa para ve zaman harcanmasına rağmen en temel işlevleri bile bozuk oyunların piyasaya sürüldüğünü anlıyor insan
      Böyle aşırı takvim baskısı paradoksal biçimde tek bir şeyi değiştirince on şeyin bozulduğu dev bir bataklık yaratıyor ve sonunda ilerleme duruyor
    • Şeytanın avukatlığını yapacak olursam, frontend geliştiricilerinin de biraz daha akıllı olması gerekirdi
      Bu, yıllar önce eklenmiş olması gereken temel hata işleme
      403 ya da tweet'leri engelleyen başka herhangi bir yanıt, kısa aralıklarla sonsuz yeniden denemeyi asla tetiklememeli
    • Gerçekten aptalca bir şey yapmam istendiğinde, kendimi güvenceye almak için bir keresinde CC bombası atmıştım
    • Şu an iş yerimde tam olarak buna benzer bir durum yaşıyorum
      Ekibin zafiyet ticket'larını yöneten bir araç yaptım ve ilk kullanım senaryosu, itiraz etmeme rağmen, tüm zafiyet ticket'larını silmek oldu
      Bunu yapan kişi gerçek güvenlik iyileştirmesinden çok, kâğıt üzerinde daha iyi görünmeye önem veriyor
    • Herkesin kullandığı ve önemsediği bir şeyi topluca kötüleme akımından daha kötüsü, çözümü bildiğiniz halde denemeye bile korktuğunuz için harekete geçemediğiniz durumdur
      Uzun zamandır bilip tekrar tekrar önermiş olmanıza rağmen denemenize bile izin verilmemesi, hatta dışlanıp “o kişi” muamelesi görmenizdir
      “Eski yöntem” bir şekilde hâlâ çalışıyor gibi görünse de şirketi yavaş yavaş öldüren teknik ve ticari yaklaşımlar yüzünden bunu yaşadım
      Yine de üst düzey biri riskli ama gerekli gördüğü bir işin sorumluluğunu açıkça alırsa, sorun çıktığında çok daha iyi yanıt verecek alan oluşur ve geliştirici sonradan gelen iğnelemeleri daha az taşımak zorunda kalır
      Tabii böyle şeyleri eleştirmek daha kolay
  • Bunun tatil haftasonu olduğuna dikkat etmek gerek
    Elon büyük bir sürümü zorla öne itti ve mühendislerin işe gelip son 12 saattir tekrar tekrar yama geçmesine neden oldu

    • Kibri o kadar büyük ki kibir kelimesi bile yetersiz kalıyor
      Programcılar için endişeleniyorum
      Daha da şaşırtıcı olan, bu günlerde Twitter mühendisliğinin ne kadar geçici çözümlerle yürüyormuş gibi görünmesi
      Kod tabanını derinlemesine anlamaya emek vermek yerine en basit ve en kısa düzeltmeler seçilince sorun çıkıyor
    • Twitter mühendislerinin bir yılı aşkın süredir başka iş aramak için zamanı vardı
      Bu noktada hem çalışma koşulları hem de yöneticinin beklentileri son derece açık
      Her ne sebeple kalıyor olurlarsa olsunlar, hâlâ dayanmaya devam edenlere empati duymak zor
    • En azından doğrudan prod ortama deploy edebilmişler
  • Bu hatanın asıl neden olma ihtimali çok düşük
    Sunucu tarafındaki rate limiter düşük maliyetlidir ve frontend hatası yalnızca hız sınırı etkin olduğunda tetiklenir
    Yönettiğim sistemlerde de ağ kütüphanelerinin varsayılan olarak makul bir sınır olmadan istekleri yeniden denemeyi sevmesi yüzünden benzer hatalar gördüm
    Ama bu yeniden denemeler hiçbir zaman rate limiter'ı zorlamadı
    Gerçi biraz pahalı bir iş yaptıktan sonra hata döndüren bir API'ye vuruyorsanız daha can sıkıcı olur, ama bu yüzden tüm açık endpoint'lere hız sınırı koyuyoruz
    Web uygulaması muhtemelen Twitter trafiğinin en küçük kısmıdır ve yerel uygulamalarda muhtemelen bu sorun yoktur

    • Bunun, kendi kendine tetiklenen DDoS'un teknik sorun yaratıp erişimi engellediği anlamına gelmesi gerekmediğini düşünüyorum
      Anonim erişimin engellenmesi bir DDoS başlattı, bu da bazı metriklerde dev bir sıçramaya yol açtı, Elon da bunu scraping artışı diye yorumlayıp scraper'ları cezalandırmak için günlük 600 tweet sınırı koydu; böyle olmuş olabilir
      Benim kotam ya sıfırlanmış ya da politika değişmiş gibi görünüyor; siteye yeniden erişebiliyorum
    • Kişisel çıkarına olduğunu düşündüğü her durumda yalan söylediği bilinen bir liderlik olduğunda, gerçek kavramının kendisi yok olur
      Bu hatanın her şeyin temel nedeni olma ihtimalinin düşük olduğuna katılıyorum
      Ama Musk'ın siteyi fiilen kapatma gerekçesi olarak anlattığı hikâyeye de inanmıyorum
      İkisi de doğru olabilir ve bu da insanı başka olası nedenleri düşünmeye itiyor; tamamen zaman kaybı ama tuhaf bir zihinsel yem gibi geliyor
      "Nothing is true and everything is possible" kitabı, Putin'in yanlış bilgiyi halkı kontrol etmek ve demokratik siyaseti ortadan kaldırmak için nasıl kullandığını anlatıyor; burada da geçerliymiş gibi hissettiriyor
      Musk hayranları onun söylemelerini istediği şeyi aynen tekrar edecektir ama çoğu insan bunun sadece kendi çıkarına yönelik saçmalık olduğunu biliyordur
      Ve kök nedeni bulmaya çalışanlar, bu hatada olduğu gibi kulağa doğru gelen ama arkasında hiçbir veri olmayan anlatılara kolayca kapılır
      ABD'nin gelecekte izleyebileceği olası yolları görmek istiyorsanız bu kitabı şiddetle tavsiye ederim
      https://en.wikipedia.org/wiki/Nothing_Is_True_and_Everything...
    • Her şey sistemin genel ölçeğine bağlı
      Böyle yeniden denemelerin backend'i ezip sunucuların istekleri reddetmeye bile yetişemediği çöküş senaryolarını bizzat görüp hafifletmeye çalıştım
      Üst katmandaki çağıranların birden çok katmandaki yeniden denemeleri durumu öyle kötüleştirmişti ki, istekler uygulama tarafından işlenmeden önce TCP buffer/kuyruklarında fiilen timeout oluyordu
      Twitter ana sayfa backend'inin benzer ölçekte olup olmadığını bilmiyorum
  • İlginç bir durum.
    Ekran görüntüsüne bakılırsa çok büyük miktarda GET /TweetDetail üretiliyor ve görünen 429’lardan, bunun bir tür hız sınırını tetiklediği anlaşılıyor.
    Bu, yakın zamanda tüm API çağrıları için kimlik doğrulamayı zorunlu kılma kararından kaynaklanıyorsa, suçlu aslında API gateway ya da onun altındaki benzer bir bileşen olabilir.
    Ayrıca bu davranış durmuyormuş gibi görünüyor; bu da üstel geri çekilmeli yeniden denemede beklenecek bir davranış değil.
    Twitter’da çalışan insanlardan daha iyi bir mühendis olduğumu iddia etmiyorum ama Musk’la ilgili değerlendirmeleri bir kenara bıraksak bile bunu canlı ortamda görmek ilginç.

    • Teorik olarak üstel geri çekilme en iyisi ama pratikte bunun o kadar sık kullanıldığını sanmıyorum.
      Kullanıcı isteklerini düşük gecikmeyle işlemek çok önemli görüldüğünden, üstel geri çekilme yerine sabit rastgele geri çekilmenin tercih edildiği çok fazla durum gördüm.
      Birçok tasarım toplantısı ve belgede, aşırı yük ile sistemin toparlanması arasındaki ödünleşimi anlayarak üstel geri çekilmeyi kullanmama kararının açıkça verildiğini gördüm.
    • Frontend muhtemelen backend’in kimlik doğrulama olmadan da çalışmaya devam edeceği varsayımıyla yazılmıştı.
      Backend değişikliği, yani zorunlu kimlik doğrulama + hız sınırlama, frontend ve backend birlikte yeterince test edilmeden dağıtıma alınmış olabilir.
    • Elon AWS faturasını ödedi mi?
      En olası suçlu bu gibi görünüyor.
      Twitter instance’ları zorla kapatılıyor olabilir.
  • Platformer’ın 10 Haziran’daki haberine göre “Twitter, 30 Haziran’daki sözleşme yenileme tarihi öncesinde Google Cloud hizmetleri için ödeme yapmayı reddediyordu.”
    Ayrıca “Twitter’ın Google Cloud sözleşmesi 2018’den beri sürüyordu” deniyor.
    https://www.engadget.com/twitter-has-supposedly-started-payi...
    Ah, sanki bütün bu karmaşayı bu açıklıyor.

    • Habere ve Bloomberg gibi kaynakların aktardığına göre Twitter sonunda Google ile anlaşmaya vardı ve sorun çözüldü.
      Muhtemelen GCP’den çıkmaya çalışıyorlardır, ama bunun ödemeyi reddettikleri için bir anda GCP erişimini kaybetmeleriyle ilgili olması pek olası değil.
    • https://www.reuters.com/technology/twitter-resumes-paying-go...
      Bu bir hafta önceki haber.
    • Twitter, Google Cloud’u ana backend hizmeti olarak kullanmıyor.
      Her şey self-hosted.
      Gcloud yalnızca batch işler ve veri analizini destekliyor.
    • Twitter’ın çekirdek hizmetleri on-prem veri merkezlerinde bulunuyor.
  • İlginç bir teori ama DDoS, anonim erişimi devre dışı bırakma kararından daha önce vardı.
    Hatta o karar, devam eden DDoS azaltımı için alınmıştı[0][1].
    Bu yüzden şüpheli web frontend yeniden deneme mantığı durumu kötüleştirmiş olabilir, ama temel neden bu değil.
    [0] https://twitter.com/elonmusk/status/1674865731136020505
    “Geçici acil önlem. Veri yağmalama öyle büyük boyuttaydı ki normal kullanıcılar için hizmet kalitesi düşüyordu!”
    [1] https://twitter.com/elonmusk/status/1674942336583757825
    “Bu yakında kaldırılacak. Önceki gönderide belirttiğim gibi, aşırı düzeyde veri kazıma nedeniyle sert ve acil önlemler gerekiyordu.”
    “Startup’lardan dünyadaki en büyük şirketlerden bazılarına kadar, yapay zeka yapan neredeyse her şirket devasa miktarda veri kazıyordu.”
    “Bir yapay zeka startup’ının saçma değerlemesine yardımcı olmak için acilen büyük miktarda sunucu açmak zorunda kalmak oldukça sinir bozucu.”

    • Açıkçası bunun yapay zeka startup’larından çok, API erişimini fahiş ücretler olmadan fiilen kapatma kararlarıyla daha ilgili olduğunu düşünüyorum.
      O startup’ların kullandığı belirli tarihten önceki tüm tweet’lerin devasa arşivlerinin bir yerlerde dolaşıyor olması kesin gibi.
    • Bu, tepkilerin ardından Elon Musk’ın öne sürdüğü iddia; o yüzden ciddi bir şüphe payıyla bakmak gerekir.
  • Giriş zorunluluğu değişikliğinden önce de böyle istekler var mıydı bilen var mı?
    Devasa scraping operasyonunun aslında onların JavaScript hatası olması gerçekten komik olurdu.

    • Son birkaç haftadır frontend’in backend’e epey sık vurduğunu gördüm.
      “Scraping trafiğinin” büyük kısmının Twitter’ın kendi suçu çıkmasına hiç şaşırmam.
    • Scraping’in bir kısmı, Twitter API’yi bozduğu için botların scraping’e geçmesinden kaynaklanıyor.
      Aptalca ama çok öngörülebilir bir sonuç.
    • Profil ekranı gibi belirli akışlarda “geri”ye basınca Android’de Firefox’ta kesinlikle sonsuz yönlendirme döngüsü oluşuyordu.
      Hız sınırına takılmadan önce birkaç saniye boyunca onlarca istek gitmiş olmalı.
      Bu tür birçok küçük hata bir araya gelip bir DDoS ya da scraping gibi görünmüş olabilir.
  • Bunun bir bug olmayabileceği de düşünülebilir.
    Elon, günde görülen tweet sayısını 600 ile sınırladıklarını söyledi; bu çılgın bir sınır.
    Çoğu insan 5 dakika scroll etse bunu aşar.

    • Belki de ne kadar çok işe yaramaz bilgi tükettiğimizi düşünmenin zamanı gelmiştir.
    • 5 dakika biraz abartı olabilir.
      Tweetbot feed’imde 500’den fazla öğe gösterdiğinde, 20 dakikalık birkaç tramvay yolculuğunda okuyacak yeterince saçmalık olduğunu hatırlıyorum.
    • Son birkaç haftadır frontend’in backend’e vurduğunu gördüğüm için, Musk bunu kamuoyu önünde kabul etmese bile bu yeni hız sınırının buna bir yanıt olduğundan şüpheleniyorum.
      Twitter’ın son dönemde trafikte devasa bir artış gördüğüne şüphem yok ama bunun büyük kısmının Twitter’ın kendi kendine yarattığı bir sorun olduğuna da oldukça eminim.
  • Elon sadece dokunmasa yeterdi, ama dur, ortada 44 milyar dolar vardı
    Parag Agrawal ve ekibi ne yaptıklarını tam olarak biliyordu
    Aptal ile para çabuk ayrılır sözü tam da buna uyuyor

    • O zehir hapı maddesiyle 5 boyutlu satranç mı oynamış oldular
    • Buna farklı bakan bir teori de var
      Buna göre Elon, Delaware mahkemesi tarafından Twitter'ı satın almaya zorlandıktan sonra parası olan diktatörlere gidip onlardan 44 milyar dolar aldı ve onlar adına Twitter'ı yakıp yıkmayı teklif etti
      Twitter olmazsa Arab Spring de olmaz, felaketlere dair gerçek zamanlı güncellemeler de olmaz ve muhalif seslerin yayılmasını engellemek için interneti kapatmaya da gerek kalmaz
  • Çok bir anlamı yok ama hız sınırı yeniden gevşetiliyor
    6k/600/300 → 8k/800/400(öğle civarı) → 10k/1k/500(saat 15:00 civarı)
    https://twitter.com/elonmusk/status/1675214274627530754 ve kendi yanıtlarına göre

    • Okunamıyor
      “Something went wrong” çıkıyor
      Yeni yalnızca giriş yapanlara açık kural altında, site ayakta olsa bile muhtemelen yine de okunamayacaktı
      Artık Twitter bağlantıları kirlenmiş bağlantı haline geldi ve fiilen işe yaramaz oldu
    • Sadece o bağlantıya dokundum ve görünüşe göre yeni uygulanmış hız sınırına takıldım
      Tam bir sirk
    • Yeniden erişilebilir oldu, sonra muhtemelen bu yeni sınır altında 5~6 dakika içinde tekrar hız sınırına takıldı