我看到我的 CentOS 6 机器上运行着许多 svnserve -d 进程,其中一个进程的 PID 为 400,PPID 为 1,其余进程的 PPID 为 400。我认为这意味着第一个进程由 init 脚本启动(我知道是这样的),其余进程是原始进程的子进程(派生?)。究竟是什么原因导致 svnserve -d 派生/生成子进程,这种行为是在哪里配置的?最后,我在 netstat 中看到很多 svn 连接,我想知道哪些操作会导致客户端在 netstat 中显示为已连接?它们是否需要在存储库中锁定文件,或者正在浏览存储库?这些操作是否有任何有状态的?我之所以问这个问题,是因为我刚刚迁移了服务器,但我还没有看到很多连接。我想知道为什么旧服务器有 50 个 svn 连接,而新服务器只有 3 个。我将旧服务器的 DNS 记录指向新 IP,因此我认为行为会相同,但我看到的连接要少得多。
CENTOS 6 SVN 1.6.11。使用 svnadmin -d(守护进程)作为初始化脚本。
答案1
原来是旧服务器出了问题,导致大量 SVN 连接无限期保持打开状态。SVN 连接不是有状态的,通常是昙花一现(出现和消失得很快),至少这是我的印象。我还认为,每次新客户端从存储库请求文件或提交到存储库时,svnserve -d 都会分叉。我认为您可以将其设置为线程化,并在 /etc/sysconfig/svnserve.conf 中设置更多选项