Lack-Terpentin – VCL konnte nicht aufgetragen werden
-
13-12-2019 - |
Frage
Ich habe Varnish Turpintine auf unserer Staging-Site installiert, indem ich den Anweisungen auf der gefolgt bin Magento-Turpintine-Wiki.
Unsere Website läuft auf Ubuntu 14.04, NGINX, Lack-4.0.3m, Terpentine v0.6.5, Magento 1.9.2.
Das sind meine DAEMON_OPTS
In /etc/default/varnish
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-f /etc/varnish/default.vcl \
-S /etc/varnish/secret \
-p cli_buffer=16384 \
-p feature=+esi_ignore_other_elements \
-p vcc_allow_inline_c=on \
-s malloc,256m"
Ich habe das Terpentinmodul erfolgreich installiert und nur die Konfiguration für den Secret Varnish Authentication Key wirklich geändert \n
angehängt, URL-Blacklist und Aktivierungs-Debug-Informationen.
Als ich versuchte, meine Konfiguration zu speichern, erhielt ich die folgende Fehlermeldung:
Failed to apply the VCL to 127.0.0.1:6082: Got unexpected response code from Varnish: 106 Message from VCC-compiler: directors are now in directors VMOD. ('input' Line 27 Pos 1) director default round-robin { ########---------------------- Running VCC-compiler failed, exited with 2 VCL compilation failed
Das ist es, was ich im Terpentin erzeugt habe var/default.vcl
Datei:
vcl 4.0;
C{
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <pthread.h>
static pthread_mutex_t lrand_mutex = PTHREAD_MUTEX_INITIALIZER;
void generate_uuid(char* buf) {
pthread_mutex_lock(&lrand_mutex);
long a = lrand48();
long b = lrand48();
long c = lrand48();
long d = lrand48();
pthread_mutex_unlock(&lrand_mutex);
sprintf(buf, "frontend=%08lx%04lx%04lx%04lx%04lx%08lx",
a,
b & 0xffff,
(b & ((long)0x0fff0000) >> 16) | 0x4000,
(c & 0x0fff) | 0x8000,
(c & (long)0xffff0000) >> 16,
d
);
return;
}
}C
import std;
director default round-robin {
{
.backend = {
.host = "127.0.0.1";
.port = "8080";
.first_byte_timeout = 300s;
.between_bytes_timeout = 300s;
}
}
}
director admin round-robin {
{
.backend = {
.host = "127.0.0.1";
.port = "8080";
.first_byte_timeout = 21600s;
.between_bytes_timeout = 21600s;
}
}
Ich konnte das scheinbar beheben, indem ich das erstellt habe custom_include.vcl
Datei von version-4.vcl
da es fehlte
cp app/code/community/Nexcessnet/Turpentine/misc/version-4.vcl app/code/community/Nexcessnet/Turpentine/misc/custom_include.vcl
Aber jetzt, wenn ich versuche, die Konfiguration zu speichern, erhalte ich eine neue Fehlermeldung:
Failed to apply the VCL to 127.0.0.1:6082: Varnish data to write over length limit by 749 characters
Dies scheint mit dem zusammenzuhängen -p cli_buffer=16384
was ich in der eingestellt habe DAEMON_OPTS
bei /etc/default/varnish
.Wenn ich versuche, diesen Wert zu erhöhen, erhalte ich immer noch die gleiche Fehlermeldung, jedoch mit einem anderen Grenzwert.
Failed to apply the VCL to 127.0.0.1:6082: Varnish data to write over length limit by 8941 characters.
Ich habe nichts drin magento/var/log/
oder /var/log/varnish/
für Lack.Ich habe versucht, den Varnish Admin zu überprüfen, um festzustellen, ob mit dem cli_buffer etwas nicht stimmt, konnte aber nichts Bemerkenswertes feststellen.
$ sudo varnishadm
varnish> param.show cli_buffer
200
cli_buffer
Value is: 16k [bytes]
Default is: 8k
Minimum is: 4k
Size of buffer for CLI command input.
You may need to increase this if you have big VCL files and use
the vcl.inline CLI command.
NB: Must be specified with -p to have effect.
Vielen Dank im Voraus für alle Ratschläge.
Lösung 2
Anscheinend habe ich das zum Laufen gebracht, indem ich einen Fix angewendet habe, den ich gefunden habe GitHub-Ticket 915.
Zunächst einmal war der Fix, den ich für meinen ersten Fehler angewendet habe, irreführend, also habe ich die von mir erstellte Datei entfernt.
rm app/code/community/Nexcessnet/Turpentine/misc/custom_include.vcl
Dann habe ich die zusammengeführt Entwicklungszweig des Magento-Turpintine-Repos mit meinem Magento-Projekt wie im vorgeschlagen GitHub-Ticket 915.
Wenn ich jetzt die Turpintine-Konfiguration speichere / die Varnish-Konfiguration anwende, erhalte ich keine Fehlermeldungen.
Auch wenn die Website offenbar nicht viel schneller geworden ist, stellt sich die Frage, wie ich sicherstellen kann, dass der Lack so funktioniert, wie er soll.
AKTUALISIERENIch konnte sicherstellen, dass Varnish funktionierte, indem ich Lackstat ausführte. Wenn der Hitrate-Durchschnitt größer als 0 ist, bedeutet dies, dass der Cache betroffen ist.
Andere Tipps
Danke für das Teilen.Ich habe gerade die neueste Version von installiert devel
Branch, um ein sehr ähnliches Problem zu beheben.Um zu überprüfen, ob Varnish zwischenspeichert, können Sie einen der folgenden Lacktop-Befehle verwenden, wenn Sie Zugriff auf den Server haben.
/usr/bin/varnishtop -i RxURL
/usr/bin/varnishtop -i RxHeader -C -I \^HOST