理解Laravel Octane中的Swoole行,字节限制和内存分配

bvk5enib  于 2023-04-13  发布在  其他
关注(0)|答案(1)|浏览(122)

我有一个关于Laravel Octane的行、字节和表的问题。

'cache' => [
        'rows' => 1000,
        'bytes' => 10000,
    ],

1.为什么我们必须限制Laravel Octane配置文件中的行数和字节数?它们不能像其他数据库(如MySQL)一样无限制吗?

  1. Swoole是如何确定字节限制的?它是通过strlen在后台计算的吗?我们如何避免“无法分配内存”异常?这个异常是否与字节限制有关?每当这个异常发生时,我都必须重新启动我的Docker容器以防止错误再次发生。
'tables' => [
        'example:1000' => [
            'name' => 'string:1000',
            'votes' => 'int',
        ],
    ],

1.为什么我们需要在配置文件中定义一个额外的Swoole表?在配置文件中使用Cache::store('octane')->put()tables键有什么区别?在配置文件中提供的示例(字符串:1000)中,:1000是什么意思?

hc8w905p

hc8w905p1#

1.因为Table是建立在共享内存之上的,所以它不能动态扩展。

  1. Unable to allocate memory是因为你的数据Key和Hash冲突率超过20%,预留的冲突内存块容量不足,设置新的数据会报Unable to allocate memory错误并返回false,存储失败,这时需要增加$size值并重启服务。
    Table占用的总内存为(HashTable结构长度+ KEY长度64字节+ $size值)(1 + $conflict_proportion值作为哈希冲突)(列大小)。
  2. Cache::store('octane')的缓存,如果没有,则使用OctaneArrayStorehttps://github.com/laravel/octane/blob/42b9030564b672a38a84dc319c210d25ee410ed6/src/OctaneServiceProvider.php#L151-L153
    Octane::table('example')的表。
    希望我能帮到你。

相关问题