leveldb和fork的初始化順序

咱們服務器內用leveldb存一些不是很重要的, 可是又須要(半)持久化的東西. 但是自從2016到如今, 遇見好幾回不一樣類型的死鎖. 直到今天, 才發現真正的緣由, 那就是leveldb不支持fork.服務器

因此在你使用leveldb的時候, 必定須要注意初始化順序:code

  • fork
  • init leveldb

或者:it

  • init leveldb
  • close leveldb
  • fork
  • init leveldb

總之, 不能init leveldb而後再fork, 一旦這樣作, 最後就會無限卡在leveldb::port::CondVar::Wait.class

切記切記….db

相關文章
相關標籤/搜索