mirror of https://github.com/MISP/MISP
chg: [sync] Try to reduce memory usage when fetching event index from Redis
parent
e2dbc690ac
commit
d2176ab8bd
|
@ -923,8 +923,10 @@ class Server extends AppModel
|
||||||
$redis = RedisTool::init();
|
$redis = RedisTool::init();
|
||||||
$indexFromCache = $redis->get("misp:event_index:{$serverSync->serverId()}");
|
$indexFromCache = $redis->get("misp:event_index:{$serverSync->serverId()}");
|
||||||
if ($indexFromCache) {
|
if ($indexFromCache) {
|
||||||
list($etag, $eventIndex) = RedisTool::deserialize(RedisTool::decompress($indexFromCache));
|
$indexFromCache = RedisTool::decompress($indexFromCache);
|
||||||
|
list($etag, $eventIndex) = RedisTool::deserialize($indexFromCache);
|
||||||
unset($indexFromCache);
|
unset($indexFromCache);
|
||||||
|
$serverSync->debug("Event index loaded from Redis cache with etag $etag containing " . count($eventIndex) . ' events');
|
||||||
} else {
|
} else {
|
||||||
$etag = '""'; // Provide empty ETag, so MISP will compute ETag for returned data
|
$etag = '""'; // Provide empty ETag, so MISP will compute ETag for returned data
|
||||||
}
|
}
|
||||||
|
@ -935,7 +937,9 @@ class Server extends AppModel
|
||||||
return $eventIndex;
|
return $eventIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unset($eventIndex);
|
||||||
$eventIndex = $response->json();
|
$eventIndex = $response->json();
|
||||||
|
unset($response->body); // remove response that can take a lot of memory
|
||||||
|
|
||||||
// correct $eventArray if just one event, probably this response returns old MISP
|
// correct $eventArray if just one event, probably this response returns old MISP
|
||||||
if (isset($eventIndex['id'])) {
|
if (isset($eventIndex['id'])) {
|
||||||
|
@ -945,6 +949,7 @@ class Server extends AppModel
|
||||||
// Save to cache for 24 hours if ETag provided
|
// Save to cache for 24 hours if ETag provided
|
||||||
$etag = $response->getHeader('etag');
|
$etag = $response->getHeader('etag');
|
||||||
if ($etag) {
|
if ($etag) {
|
||||||
|
$serverSync->debug("Event index from remote server has different etag $etag, saving to cache");
|
||||||
$data = RedisTool::compress(RedisTool::serialize([$etag, $eventIndex]));
|
$data = RedisTool::compress(RedisTool::serialize([$etag, $eventIndex]));
|
||||||
$redis->setex("misp:event_index:{$serverSync->serverId()}", 3600 * 24, $data);
|
$redis->setex("misp:event_index:{$serverSync->serverId()}", 3600 * 24, $data);
|
||||||
} elseif (isset($eventIndex)) {
|
} elseif (isset($eventIndex)) {
|
||||||
|
|
Loading…
Reference in New Issue