NOT: Aşağıdakilerden herhangi birini silmek istemiyorum, ancak bunun daha önce bir Heroku sorunu olduğunu düşündüğüm, öyle değil. Bu benim yerel makine kıvrılma yoluyla mesajları gönderme ve bir sorun olduğunu düşünüyorum yakut Net :: HTTP Şu anda bazı test verilerini almak için Heroku (ücretsiz) bir raylar uygulamanızda ve sırayla çalışmaya başlıyorum10 İkinci Gecikme Sonrası Önemsiz Önce Önce ipv6 (Ubuntu) nedeniyle POST
her isteği neredeyse tam 10 saniye sürer, nedense
uri = URI.parse("http://SITENAME.herokuapp.com")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Post.new("/users.json")
request.add_field('Content-Type', 'application/json')
request.body = {'user' => User.first.to_hash }.to_json
response = http.request(request)
: uygulama ben şöyle Heroku uygulamasında bir JSON REST API benim DEV DB'den ve yayınlardan test verilerini alan bir tırmık görev var. Daha sonra üst satırı şu şekilde değiştirdim:
uri = URI.parse("http://localhost:3000")
... ve istekleri inanılmaz derecede hızlı. Heroku'nun ücretsiz sürümde POSTS'u yavaşlatması durumunda kimse var mı? (İşçi dyno'yu ödemek istedikleri için mantıklı olur) Sonunda ücretli sürüm için pony etmeye devam edeceğim, ancak bunu yapmadan önce DEV'ümde biraz daha ilerlemek istiyorum. Ayrıca, eğer kasıtlı olarak onları yavaşlatmıyorlarsa, yazıların neden bu kadar uzun sürdüğünü bilmeden onları kullanmakta biraz tereddüt ediyorum. 10 saniye süren hat:
response = http.request(request)
Eminim ki bu açıktı, ama bundan bahsetmiştim.
UPDATE 3/12 Sadece günlüğümden bazı günlükleri göndermek istedim. Ben Yukarıdaki aynı istekte bloğu neden :: HTTP :: Mesaj kütüphanesi değildi 3/15 emin olmak için sadece Net
1400
Before: 2013-03-12 21:30:33 UTC
After: 2013-03-12 21:30:43 UTC
1401
Before: 2013-03-12 21:30:43 UTC
After: 2013-03-12 21:30:54 UTC
1402
Before: 2013-03-12 21:30:54 UTC
After: 2013-03-12 21:31:04 UTC
1403
Before: 2013-03-12 21:31:04 UTC
After: 2013-03-12 21:31:14 UTC
1404
Before: 2013-03-12 21:31:14 UTC
After: 2013-03-12 21:31:24 UTC
1405
Before: 2013-03-12 21:31:24 UTC
After: 2013-03-12 21:31:34 UTC
GÜNCELLEME: isteklerinin tamamı 10 saniyeden uzun sürüyorsa
curl -X POST -H "Content-type: application/json" -d {"params":{"q":"query"} http://SITENAME.herokuapp.com/users.json
Herkes gecikme oluyor nerede anlatmak için (new_relic hariç) kullanabileceğim bir Heroku hile vardır: Kıvrık ve aynı zamanda 10 saniye sürdü?
GÜNCELLEME 15/03 # 2 Sadece benim Heroku uygulamasında unicorn ve hala Yakut Net :: HTTP :: mesaj hem 10 saniyelik bir gecikme alma ve kabuğundan curl kullanarak geçti. Localhost'a geçiş, posta hemen geri geliyor. 2
Hemen denedik
2013-03-29T03:22:06+00:00 app[web.1]: Started POST "/user.json" for IP
2013-03-29T03:22:06+00:00 app[web.1]: Parameters: {"user"=>{data}}
2013-03-29T03:22:06+00:00 app[web.1]: Processing by UserController#create as JSON
2013-03-29T03:22:06+00:00 app[web.1]: User Load (2.2ms) <<<SQL>>>
2013-03-29T03:22:06+00:00 app[web.1]: Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 2.2ms)
2013-03-29T03:22:06+00:00 heroku[router]: at=info method=POST path=/users.json host=HOST.herokuapp.com fwd="66.31.201.99" dyno=web.1 connect=2ms service=33ms status=200 bytes=16
2013-03-29T03:22:16+00:00 app[web.1]: Started POST "/users.json" for 66.31.201.99 at 2013-03-29 03:22:16 +0000
2013-03-29T03:22:16+00:00 app[web.1]: Processing by UserController#create as JSON
2013-03-29T03:22:16+00:00 heroku[router]: at=info method=POST path=/users.json host=HOST.herokuapp.com fwd="66.31.201.99" dyno=web.1 connect=8ms service=19ms status=200 bytes=16
2013-03-29T03:22:16+00:00 app[web.1]: Parameters: Parameters: {"user"=>{data}}
2013-03-29T03:22:16+00:00 app[web.1]: User Load (2.0ms) SQL
2013-03-29T03:22:16+00:00 app[web.1]: Completed 200 OK in 3ms (Views: 0.1ms | ActiveRecord: 2.0ms)
GÜNCELLEME 28/03 #: son derece hızlı yanıt süreleri ile Heroku günlükleri gönderme son Başına yorum GÜNCELLEME 3/28
, çevrimiçi bir kabuktan kıvrılma: www.compileonline.com/execute_bash_online.php ve hemen geri döndü, bu yüzden makinemde bir şey olduğunu düşünüyorum. Bir kıvrımın nerede yakalandığını nasıl giderebileceğimi bilen var mı?Online kabuğunda 10 saniye lokal ama anlıktır istek biçimi şöyledir:
curl -X POST -H "Content-type: application/json" -d '{"user":"payload"}' http://APP.herokuapp.com/users.json
GÜNCELLEME 28/03 # benim makinede 3
şey gecikmeye neden oluyor. Ben mevcut sistem saati almak ve daha sonra ayrıntılı modda curl gerçekleştirmek ve 10 saniyelik bir gecikme kıvırmak bile gönderilmeden önce olur üzere aşağıdaki koştum: ...
date +"%T" && curl -X POST -H "Content-type: application/json" -d '{"user":"payload"}' http://APP.herokuapp.com/users.json -v --trace-time -S
... ve çıkış
00:44:16 [start time from date +"%T"]
00:44:26.653510 * About to connect() to APP.herokuapp.com port 80 (#0)
00:44:26.653632 * Trying 184.72.248.52... connected
00:44:26.675676 > POST /users.json HTTP/1.1
00:44:26.675676 > User-Agent: curl/7.22.0 (i686-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
00:44:26.675676 > Host: APP.herokuapp.com
00:44:26.675676 > Accept: */*
00:44:26.675676 > Content-type: application/json
00:44:26.675676 > Content-Length: 653
00:44:26.675676 >
00:44:26.675954 * upload completely sent off: 653out of 653 bytes
00:44:26.717286 < HTTP/1.1 200 OK
00:44:26.717380 < Cache-Control: max-age=0, private, must-revalidate
00:44:26.717518 < Content-Type: application/json; charset=utf-8
00:44:26.717552 < Date: Fri, 29 Mar 2013 04:44:33 GMT
00:44:26.717584 < Etag: "7363e85fe9edee6f053a4b319588c086"
00:44:26.717616 < Status: 200 OK
00:44:26.717647 < X-Rack-Cache: invalidate, pass
00:44:26.717678 < X-Request-Id: 19ff002048e4e2d5e17a8203576a4194
00:44:26.717708 < X-Runtime: 0.008901
00:44:26.717739 < X-Ua-Compatible: IE=Edge,chrome=1
00:44:26.717771 < transfer-encoding: chunked
00:44:26.717802 < Connection: keep-alive
00:44:26.717832 <
00:44:26.717925 * Connection #0 to host APP.herokuapp.com left intact
00:44:26.717998 * Closing connection #0
İlk zaman damgası ve connect() çağrısı arasındaki 10 saniyelik gecikmeyi görebilirsiniz. Zaten ana makineyi çözmemin sorunum kabukta host APP.herokuapp.com
yapıp yapmadığını görmeye çalıştım, ancak bu hemen döner.
GÜNCELLEME 3/28 # 4
Ben ipv4 kullanarak zorlar, böylece -4
işaretini ekleme yukarıdaki örneği güncelledik ve benim geliştirme makinede hemen döndürür:
date +"%T" && curl -4 -X POST -H "Content-type: application/json" -d '{"user":"payload"}' http://APP.herokuapp.com/users.json -v --trace-time -S
Makinemdeki ipv6'yı http://www.upubuntu.com/2011/05/how-to-disable-ipv6-under-ubuntu.html
'daki adımları kullanarak devre dışı bırakmayı denedim, ancak hala çalışmıyor. Şimdi sorun, yapmak istediğim isteklerin Net :: HTTP ve HTTParty ile yapılması, bu yüzden IPv6 sayısını sistem çapında düzeltmek istiyorum, bu yüzden kıvrımdaki bu yara bandı bir çözüm değil.
Heroku'da bir uygulama var, POST'ları inanılmaz derecede hızlı bir şekilde kullanıyor, bu yüzden tek dyno'ya programlı istekleri yavaşlattığını hayal ediyorum, böylece bellekte yüklü halde saklayamazsınız – AJcodez
Hiçbir sınırlama yok Heroku. POST işlem yaparken herhangi bir işlem veya veritabanı sorgusu yapıyor musunuz? Ne olup bittiğini anlamak için New Relic gibi bir şey eklemek isteyebilirsiniz: https://addons.heroku.com/newrelic – friism
Evet, POST basit bir DB eklentisi yapar, ancak bu PC'imde 20 ms gibi olur, yani Heroku sunucusunda çok daha uzun sürdüğünü hayal edemiyorum. Bunu teyit etmek için heroku günlüklerini kontrol ettim - çok hızlı bir şekilde geri döndü, bu POST'ların 1400'ünü bugün yaptım ve hepsinin tam olarak 10 saniye sürdüğünü gördüm - bazı giriş kayıtlarının bazıları için yukarıdaki düzeltilmiş postayı görüyorum. –