2014-06-26 25 views
5

Geliştirilmiş Android uygulamam ile kullanıcılara GCM ile PHP bildirimleri yoluyla gönderen bir web sunucusuna sahibim. Yaklaşık 3000 kullanıcı var, bazı kullanıcılar günde yaklaşık 20 bildirim alıyor.Google Cloud Messaging Sunucusu yanıtı yavaş (1 dakika)

1 yıldan fazla bir süredir mükemmel çalışıyordu, ancak 5 günden beri "https://android.googleapis.com/gcm/send" aramasının yanıt süresinin 1 saniyeden daha kısa bir süre 1 dakika olduğunu görüyorum. Ve yine de tüm bildirimler kullanıcılara ulaşır.

Çalışma aşağıdaki gibi gelişmiştir: http://www.androidhive.info/2012/10/android-push-notifications-using-google-cloud-messaging-gcm-php-and-mysql/

Ben fazla 1 gün bildirimlerin gönderilmesi devre dışı. Sonra tekrar başladı ve birkaç dakika için googleapis her zamanki gibi cevap verdi, ama sonra yine 60 saniye bir tepki süresi.

Google'ın bunu yapmakta olduğu anlaşılıyor, ancak nedenini bilmiyorum. Aşırı trafik yönetmek için bir azaltma özelliği yoktur

+0

Gönderme başarısız olursa exponencial back-off kullanıyor musunuz? Örneğin, java'da * gönder (Message message, String registrationId, int retries) *, * gibi bir yöntem vardır. Not: Bu yöntem, hizmetin kullanılamaması durumunda tekrar denemek için üstel geri çekmeyi kullanır ve dolayısıyla arama iş parçacığını bir çok saniyeliğine engelleyebilir. . * Google, [Üçüncü Taraf Uygulama Sunucusu'nun Rolü] 'nde (http://developer.android.com/google/gcm/server.html#role) bunu açıklar. Google, sunucunuzdan çok fazla trafik algılayabilir ve bir sınır koyar. – AlexBcn

cevap

3

deneyin koşu:

curl https://apis.google.com/ 

ve

curl https://apis.google.com/ --ipv4 

eğer daha hızlı koşarsanız, sunucunuzdaki ipv6'yı devre dışı bırakabilirsiniz, belki sunucunuzun ISP'si IPv6'yı desteklemiyor, bu da zaman aşımına uğramadan 1-2 dakika gecikmeye yol açıyor ve IPv4'e tekrar geçiyor.

i son zamanlarda koştu diğer konu daraltma GCM: how to avoid throttling

temelde kısa bir sürede aynı kullanıcıya çok fazla mesaj göndermek eğer push mesajlarını düşürüyorlar google oldu. Bu, "pil tasarrufu" ve "bant genişliği" (muhtemelen onlarınkileri) için ... bir cihazı 10 dakikadan fazla bir dakikadan fazla veri göndermek istiyorsanız ve kullanıcı aslında uygulamayı kullanırken, her zaman daha iyidir. o zaman kullanıcı ve sunucunuz arasında doğrudan bir TCP bağlantısı açın :)

+1

Teşekkürler! Sadece sunucuları taşıdım ve IPv6'nın bu soruna neden olduğunu anlayabilmek için birkaç günümü aldım. Siz rock efendim :) –

+0

Başar; Teşekkürler!! Bu ipv4 tavsiyesi, başka bir yerde anlayamadığım ve bir şey bulamadığım bir sorunu çözdü. – Arthur

+0

Aynı sorunu aldım! IPv6, soruna neden oldu. Teşekkürler, günümü –

0

Tüm 3000 kullanıcıya göndermek için kodunuzu nasıl uyguladınız, Google istek başına 1000 kullanıcıya izin veriyor. Size yardımcı olması için bazı kodları göster.

+0

kaydetmedim. Mesajlar tüm kullanıcılara gönderilmez. Kullanıcılar kendi filtreleriyle tanımlayabilir. Bir çağrı servisinde kullanılır. – JarnoQ

İlgili konular