我们在linux服务器中面临太多打开的文件,我们已经将ulimits增加到了最大值。
我计划使用gdb命令关闭文件描述符,然后关闭我正在寻找的pid的fd。
这会解决太多文件的问题吗?我们也在寻找解决方案,从应用程序中解决这个问题。
有人能建议用gdb关闭fd来解决我们的问题吗?请提出建议。
当执行lsof命令时,它会在服务器上提供26k个文件。
系统上似乎不太可能有26K不同的.ttf
字体文件。
这表明您多次打开相同的.ttf
字体,或者您正在泄漏文件描述符。
你应该肯定修复FD泄漏(如果有(——再多的手动关闭FD也不会让服务器工作——过一段时间就会遇到同样的问题。
对于";多次打开同一文件";,通常的解决方案是引入字体缓存——在打开文件之前,检查字体缓存,如果已经打开,则使用其中的数据。这可能增加存储器消耗;打开多次";问题
内存消耗可以通过使用适当的缓存过期策略进行管理(如果必要(。