我正在阅读其他类似标题的线程,但似乎与我无关。 我有一个在我的本地ubuntu框git回购。 我有的文件是MysqL转储我分裂成每个2MB文件。 当我git,这是输出:
git@pc:~/repos/x$ git gc Counting objects: 17244,done. Delta compression using up to 4 threads. Killedssing objects: 90% (2491/2767) error: Failed to run repack
有没有一种方法来追踪造成什么? 我已经尝试过了
git config --global pack.windowMemory "20m" git config --global pack.packSizeLimit "20m" git config --global pack.threads "1"
但是这是输出
git@pc:~/repos/x$ git gc Counting objects: 17244,done. Killedssing objects: 3% (88/2767) error: Failed to run repack
编辑
用户空间中的Linux C / C ++定时器信号处理程序
JVM信号链接SIGPIPE
有效地使用siglongjmp
如何将信号处理程序添加到用Py3k / Python编写的shell中?
这对我工作:
git config --global pack.windowMemory "20m" git config --global pack.packSizeLimit "20m" git config --global pack.threads "4" git config --global pack.window "2" git config --global pack.depth "10"
这似乎是因为我只有256 ram vps。 和其他进程已经吃了100MB。 我也会尝试升级我的VPS,因为这个configuration使得git gc和git clone非常慢。
再次编辑经过更多的调查,这是因为线程。 我有4个虚拟内核分配给我的VPS,当我把pack.threads“2”没有其他人,问题就消失了。
我问我的提供商给我更多的内存,但没有帮助。 只有当我configuration线程。 希望这可以帮助别人
find一个正在破坏我的过程的神秘过程
为什么我不能在asyncio事件循环运行时捕获SIGINT?
信号在C中排队
closures控制台时如何正确处理SIGBREAK?
C ++,linux,fork,execvp,waitpid和SIGTSP
从你的输出看来,这个进程看起来像是在一个外部进程中被杀死,比如Linux OOM Killer ,或者其他一些资源管理进程。 如果你的内存或磁盘空间不足,那么这将给你一个合理的地方开始你的调查。
你也可以考虑在strace下运行你的过程。 这通常会告诉你程序在接收到信号时做了什么,但是不一定总是告诉你信号发送者是谁。
如果strace失败,那么Git源码目前有12个对sigaction(2)的引用,您可以通过检查siginfo_t结构来确定信号发送者。 这很可能需要核心转储或交互式调试器(如gdb) 。