如何控制rocksdb共享对象在kafkastreams中的位置

z6psavjg  于 2021-06-08  发布在  Kafka
关注(0)|答案(1)|浏览(398)

我有一个Kafka流应用程序。在我们将代码部署到qa服务器之前,我对rocksdb或kafka流没有任何问题。应用程序流状态设置为错误,这是错误消息:

ERROR com.sial.notifications.kafka.streams.AuditStream - Thread: notification-messages-ecf5f120-5cfb-4a2a-91b5-b145e99c3014-StreamThread-1 Uncaught streams exception /tmp/librocksdbjni6472682265799189638.so: /tmp/librocksdbjni6472682265799189638.so: failed to map segment from shared object: Operation not permitted

当应用程序启动时,rocksdb共享对象被写到/tmp,但是为了安全起见,服务器装载了/tmp noexec,因此我们不能从/tmp运行共享对象。有没有办法控制so写在哪里?
我发现我可以通过设置java.io.tmpdir系统属性来更改它,但这看起来非常重,可能会对其他包产生副作用。是否有特定于rocksdb或kafka流的系统属性来确定so的写入位置?

bvjveswy

bvjveswy1#

我还尝试配置kafka消费者存储其内容的位置,我认为您可以设置一个属性:

state.dir - Directory location for state stores (default value /tmp/kafka-streams)

因此,我认为在创建kafkastreams配置时,可以将以下属性注入其中:

StreamsConfig.STATE_DIR_CONFIG

这里也有描述
如果你想查看完整的财产清单,你可以到这里

相关问题