我正在开发基于 Laravel Octane 和 Swoole 的地理地图服务器。服务器是用 Forge 和 DigitalOcean 创建的。一切正常,包括 Octane 路线和 Octane Swoole 表。我可以轻松地从内存中写入和读取数据。但是当我尝试用完整的地理数据集(~1Gb)预填充 Swoole 表时,在成功填充大约 600Mb 后,我总是遇到“无法分配内存”的问题。但是,到目前为止,服务器在 4Gb 中还有超过 1.5Gb 的可用内存。Octane Swoole 表似乎有一个限制,我不知道如何控制。是吗?关于如何解决问题的任何想法?
生产错误:
Swoole\Table::set(): failed to set('z7y71x80'), 无法分配内存 {"exception":"[object] (ErrorException(code: 0): Swoole\Table::set(): failed to设置('z7y71x80'),无法在 /home/forge/map.blitztest.ru/app/Console/Commands/CacheMapTiles.php:64 分配内存)
Octane Swoole 表配置:
'tables' => [
'tiles:21844' => [
'table' => 'int:1',
],
'tiles1:9910' => [
'tile' => 'string:1000',
],
'tiles2:1508' => [
'tile' => 'string:10000',
],
'tiles3:888' => [
'tile' => 'string:30000',
],
'tiles4:1149' => [
'tile' => 'string:50000',
],
'tiles5:2219' => [
'tile' => 'string:70000',
],
'tiles6:1758' => [
'tile' => 'string:90000',
],
'tiles7:2100' => [
'tile' => 'string:110000',
],
'tiles8:1631' => [
'tile' => 'string:130000',
],
'tiles9:681' => [
'tile' => 'string:176906',
],
],