Cloudflare o plugin che rompono la mia istanza di Discourse?

Nel mio forum Discourse, quando clicco sull’icona della campana per le notifiche, continua a mostrare il caricatore. Nel menu del caricatore viene scritto: “Rallenta, troppe richieste da questo indirizzo IP”. Sto utilizzando Cloudflare.

Come stai utilizzando Cloudflare, nello specifico?

Ecco un argomento molto pertinente:

Hai seguito i tre passaggi indicati lì?

Sì, li ho seguiti e funzionava correttamente fino all’ultimo aggiornamento beta.
Per la maggior parte funziona ancora bene, ma le notifiche stanno creando problemi: inviano un numero infinito di richieste ogni pochi secondi.

Ecco la mia console:

E qui il file aperto:

Disabilita Cloudflare, sta danneggiando il tuo sito.

Sono sul piano gratuito di Cloudflare e utilizzo l’SSL di Cloudflare con abbonamento da 5$, ma non c’è alcuna funzionalità di Cloudflare abilitata: ad esempio, Rocket Loader è disattivato e ogni altra ottimizzazione (come la minificazione, ecc.) è spenta. Inoltre, altre funzionalità non sono nemmeno disponibili nel piano gratuito (ad esempio Railgun, ecc.). La cache è impostata per rispettare le intestazioni dell’origine esistenti. Tutto funzionava correttamente, ma ho appena realizzato di aver aggiornato al ramo master di git andando su /admin/upgrade, il che potrebbe aver creato problemi. Ho successivamente rimosso gli script e i riferimenti, ma il sistema continua a controllare ripetutamente le notifiche. Il problema è causato esclusivamente dalle notifiche; tutto il resto funziona.

Sto utilizzando Cloudflare per servire i file archiviati su Amazon S3 tramite CloudFront. Se non usassi Cloudflare, i miei costi aumenterebbero. Cloudflare funge solo da provider DNS e SSL; la maggior parte delle sue ottimizzazioni e funzionalità è disattivata e molte non sono nemmeno disponibili nel piano gratuito. Secondo te, nel mio scenario, Cloudflare è ancora il colpevole?

Dovrei provare a ricostruire il progetto per risolvere i problemi?

P.S.: Sono un fan di StackOverflow, del blog CodingHorror e di Discourse. Saluti :vulcan_salute:

Prova prima a disabilitare CloudFlare (tranne il DNS di base) come esperimento. Se il problema scompare, questo ti dice qualcosa.

Ho disattivato la nuvola arancione di Cloudflare, ho aspettato che il browser mostrasse SSL di Let’s Encrypt invece di Cloudflare per verificare che i contenuti venissero accessi direttamente dal server e non tramite Cloudflare, quindi ho ricostruito il sito. Ora, quando visito la pagina e faccio clic sul menu utente e sull’icona delle notifiche, ricevo ancora il seguente errore:

Uncaught (in promise) DOMException: Quota exceeded.
_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:77250 Uncaught TypeError: Cannot read property 'dasherize' of undefined
    at s.itemHtml (_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:77250)
    at _application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:77390
    at _ember_jquery-d1d89874d5f08a664c68007c6c2eef5e3bb1cbd8058291fce7818d8ef4ded8ca.js:39008
    at t.u.Mixin.create.c.forEach (_ember_jquery-d1d89874d5f08a664c68007c6c2eef5e3bb1cbd8058291fce7818d8ef4ded8ca.js:38995)
    at t.u.Mixin.create.c.map (_ember_jquery-d1d89874d5f08a664c68007c6c2eef5e3bb1cbd8058291fce7818d8ef4ded8ca.js:39007)
    at s.html (_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:77389)
    at s.value (_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:80621)
    at s.value (_application-977ce16935600e0a620c1ea565154ab68e46f60a9fe0f207139e0f2128dd9474.js:80371)
    at s (_vendor-7fd29296ee54f8a7ced9508b106a09ec4aae4912ed1cf10eceb7eb2acca03309.js:20669)
    at t.exports (_vendor-7fd29296ee54f8a7ced9508b106a09ec4aae4912ed1cf10eceb7eb2acca03309.js:20652)

E quando il file viene aperto, mostra quanto segue:

define("discourse/widgets/quick-access-notifications", ["discourse/lib/ajax", "discourse/widgets/widget", "discourse/widgets/quick-access-panel"], function (_ajax, _widget, _quickAccessPanel) {
  "use strict";

  (0, _widget.createWidgetFrom)(_quickAccessPanel.default, "quick-access-notifications", {
    buildKey: function buildKey() {
      return "quick-access-notifications";
    },
    emptyStatePlaceholderItemKey: "notifications.empty",

    markReadRequest: function markReadRequest() {
      return (0, _ajax.ajax)("/notifications/mark-read", { type: "PUT" });
    },
    newItemsLoaded: function newItemsLoaded() {
      if (!this.currentUser.enforcedSecondFactor) {
        this.currentUser.set("unread_notifications", 0);
      }
    },
    itemHtml: function itemHtml(notification) {
      var notificationName = this.site.notificationLookup[notification.notification_type];

      return this.attach(notificationName.dasherize() + "-notification-item", notification, {}, { fallbackWidgetName: "default-notification-item" });
    },
    findNewItems: function findNewItems() {
      return this._findStaleItemsInStore().refresh();
    },
    showAllHref: function showAllHref() {
      return this.attrs.path + "/notifications";
    },
    hasUnread: function hasUnread() {
      return this.getItems().filterBy("read", false).length > 0;
    },
    _findStaleItemsInStore: function _findStaleItemsInStore() {
      return this.store.findStale("notification", {
        recent: true,
        silent: this.currentUser.enforcedSecondFactor,
        limit: this.estimateItemLimit()
      }, { cacheKey: "recent-notifications" });
    }
  });
});

Ho appena notato che questo problema si verifica solo quando sono loggato come utente amministratore e mini_profiler è visualizzato. Ho effettuato l’accesso come utente normale e funziona come previsto.

Vedi:

Forse è necessario cancellare tutto l’archiviazione locale.

Ho liberato lo spazio di archiviazione e ora non viene più visualizzato l’errore relativo alla quota. Tuttavia, continua a effettuare più richieste e ricevo una risposta 429 che mi invita a rallentare. Attualmente non sto utilizzando Cloudflare (Dovrei anche commentare il template di Cloudflare in app.yml?). L’errore è lo stesso in dasherize. Questi errori si verificano solo per l’utente amministratore e vengo rapidamente limitato dalla tariffa.

Quali plugin e temi non ufficiali state utilizzando? È possibile che uno di essi stia generando un carico elevato di richieste.

Sto utilizzando i seguenti plugin

Per iniziare, commenta ogni plugin che non stai utilizzando. Anche se installati ma disabilitati, continuano a gravare sul sistema.

Inizia disattivando tutti i plugin di terze parti (quelli senza il segno di spunta verde). Molto probabilmente è questo il problema.

Ho rimosso Cloudflare, molti plugin e plugin di terze parti, ma il problema non è ancora stato risolto.

Rimuovi tutto ciò che non ha una spunta verde e ricostruisci.

Verifica se lo stesso errore si verifica su un altro computer; forse hai esaurito lo spazio su disco o hai qualche altro problema locale.

Sul mio browser mobile funziona :slight_smile: Darò un’occhiata, qual è il problema locale che ho? Probabilmente è legato allo spazio su disco e a un disco rigido lento. Comunque, è bene che abbia eliminato diversi plugin inutili :laughing:

Sembra che io stia ancora riscontrando questo problema con alcuni utenti.

Penso che il mio problema sia correlato a quello menzionato di seguito e sto riscontrando questo problema dopo l’aggiornamento a questa versione:

Non riesco a capire cosa stia causando questo problema. Funziona per i nuovi utenti, ma per gli altri non funziona. Stavo utilizzando un plugin di follow per Discourse e poi l’ho commentato. Ora vedo questo problema. È possibile che il problema sia dovuto alla rimozione di quel plugin? Dato che presumo che si stia verificando con quegli utenti che probabilmente avevano alcuni follower o che hanno utilizzato quel plugin? È in realtà un’ipotesi azzardata. Può quel plugin essere responsabile di ciò?

Sì, è possibile. Dato che non possediamo quel plugin, non abbiamo modo di sapere se sia questo il caso. Puoi provare a riattivarlo e verificare. Se risolve il problema, segnalalo nel topic del plugin.

@Falco Sì, risolve questo problema. Ho reinstallato il plugin discourse-follow e ha risolto il problema. Grazie :slight_smile: