- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我的应用程序正在使用 redis 存储,它在本地运行良好,但在生产中,使用 Phusion Passenger(开源)我遇到了这个错误。
Errno::EMFILE (Too many open files - socket(2)):
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:24:in `initialize'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:24:in `initialize'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:143:in `new'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:143:in `connect_addrinfo'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:187:in `block in connect'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:185:in `each'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:185:in `each_with_index'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:185:in `connect'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/connection/ruby.rb:260:in `connect'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:336:in `establish_connection'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:101:in `block in connect'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:293:in `with_reconnect'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:100:in `connect'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:364:in `ensure_connected'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:221:in `block in process'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:306:in `logging'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:220:in `process'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis/client.rb:120:in `call'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis.rb:862:in `block in get'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis.rb:58:in `block in synchronize'
/usr/local/rvm/rubies/ruby-2.2.2/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis.rb:58:in `synchronize'
vendor/bundle/ruby/2.2.0/gems/redis-3.3.0/lib/redis.rb:861:in `get'
vendor/bundle/ruby/2.2.0/gems/redis-store-1.1.7/lib/redis/store/interface.rb:5:in `get'
vendor/bundle/ruby/2.2.0/gems/redis-store-1.1.7/lib/redis/store/marshalling.rb:17:in `get'
vendor/bundle/ruby/2.2.0/gems/redis-activesupport-4.1.5/lib/active_support/cache/redis_store.rb:230:in `block in read_entry'
vendor/bundle/ruby/2.2.0/gems/redis-activesupport-4.1.5/lib/active_support/cache/redis_store.rb:212:in `call'
vendor/bundle/ruby/2.2.0/gems/redis-activesupport-4.1.5/lib/active_support/cache/redis_store.rb:212:in `with'
vendor/bundle/ruby/2.2.0/gems/redis-activesupport-4.1.5/lib/active_support/cache/redis_store.rb:230:in `read_entry'
vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/cache.rb:413:in `block in exist?'
vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/cache.rb:547:in `block in instrument'
vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/notifications.rb:166:in `instrument'
vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/cache.rb:547:in `instrument'
vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.6/lib/active_support/cache.rb:412:in `exist?'
vendor/bundle/ruby/2.2.0/gems/redis-activesupport-4.1.5/lib/active_support/cache/redis_store.rb:200:in `exist?'
我的缓存初始化代码是
Rails.application.configure do
Rack::MiniProfiler.config.storage_options = { host: 'redis.local.com', port: 6379 }
Rack::MiniProfiler.config.storage = Rack::MiniProfiler::RedisStore
config.cache_store = :redis_store, http://redis.local.com:6379, { expires_in: 5.minutes }
Rails.cache = ActiveSupport::Cache::RedisStore.new
end
搜索了所有的 redis-rb 和 redis-store gem ,没有发现任何东西。如何确保 passenger 在将 Redis 用作缓存存储时不会创建多个连接?
最佳答案
这不是乘客问题。这是您的应用程序达到其文件描述符限制。为什么会达到极限?不知道——也许它应该打开很多文件描述符,或者你可能在某处泄漏了文件描述符。您可以尝试的一件事是增加 passenger_app_file_descriptor_ulimit ,但这仅在您的应用程序确实应该使用许多文件描述符而不是泄漏它们时才有用。如果您的应用程序泄漏了它们,那么剩下的唯一事情就是调试您的应用程序,找出泄漏的来源。
关于ruby-on-rails - 在 Passenger 中运行时使用 RedisStore 进行缓存时出现 Errno::EMFILE(打开的文件过多 - 套接字(2)),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38078424/
监视文件更改时出错: EMFILE {"code":"EMFILE","errno":"EMFILE","syscall":"Error watching file for changes:","fi
我正在尝试运行 npm install bitgo命令但在终端上出现以下错误, npm ERR! code EMFILE npm ERR! syscall spawn git npm ERR! pat
我正在测试 couchdb,其中有三名工作人员试图将 200,000 条记录插入到 couchdb 中。 几千条记录后,我得到 500 {"error":"error","reason":"emf
我实现了一个文件缓存来为长 GridView 加载小图像。滚动一段时间后,我得到了很多 libcore.io.ErrnoException: open failed: EMFILE (Too many
我在使用 NodeJS API 时遇到了一些问题。 有时,它会返回,ConnectionError: getaddrinfo EMFILE 并且在这之后一切都是 fuc**。 所以,我开始调查了。我发
达到当前请求速率后出现此错误:11.12 请求/秒 当前用户:1184 当前连接用户:990 当前阶段:1ejabberd tsung 测试之后我用谷歌搜索了其中一些人建议增加/proc/sys/fs
每当我执行“grunt server”时,它都会自动给我这个错误: Running "watch" task Waiting... Warning: EMFILE, too many open fil
无法接受新连接 (EMFILE) - 此消息每隔几秒钟多次附加到日志中,并且服务器不强调连接。它发生在 2000 多个连接之后。 #lsof | wc -l 2309 #ulimit -n 655
今天,当我尝试在 NodeJs 中实现一个使用异步/同步 I/O 方法的示例时,我遇到了一个奇怪的问题。当我尝试使用 ab 发送请求时,我在 Async 方法中收到此错误: { [Error: EMF
我需要打开一个包含文件的目录.. 为每个文件打开读取流并将所有文件中的数据写入一个文件中。但我一直收到错误:EMFILE,打开 'chunks/piece96.data' 我的 ulimit 是 25
我正在尝试在我的 Node 作业中使用 ChildProcess.exec 在 async.forEach 循环中运行命令。这是代码 async.forEach( docPaths, function
我最近运行 Node.js 的网站收到了大量流量。随着流量的增加,它开始频繁崩溃,这是以前从未发生过的。我的日志中出现以下错误: { [Error: connect EMFILE] code: 'EM
我收到以下非常烦人的错误: Error: EMFILE, too many open files '/home/savagegames.net/views/index.jade' at Object.
我的 Java 应用程序与服务器建立 TCP 连接,并通过发送和接收消息每秒与其通信。服务器和客户端都在同一台 Mac 上运行。大约 15-20 分钟后,我的服务器崩溃并出现错误“Errno::EMF
几天来,我一直在寻找解决错误的有效解决方案 Error: EMFILE, too many open files 似乎很多人都有同样的问题。通常的答案涉及增加文件描述符的数量。所以,我试过这个: sy
我的 gulpfile.js 看起来像这样: gulp.task('default', ['build', 'browser-sync'], function () { gulp.watch(
使用 nw.js,我只是想将图像保存在具有不同随机名称的 img 元素数组中。 但是有一些错误,我的代码有问题吗? for (i = 0; i * 还有一个错误: "Uncaught Error: s
当进程用完文件描述符时,accept() 将失败并将errno 设置为EMFILE。然而,本应被接受的底层连接并未关闭,因此似乎无法通知客户端应用程序代码无法处理连接。 问题是当文件描述符用完时,关于
我正在尝试使用从 GET 请求接收到的数据填充数据库。每个请求返回 500 个项目,进而向数据库发出 500 个 POST。需要发出 686 个 GET 请求。我遇到的问题是在第三次 GET 之后,我
我正在尝试使用EmFile库进行基于C的嵌入式编程。 这是API文档中FS_write的结构: U32 FS_Write (FS_FILE * pFile, const v
我是一名优秀的程序员,十分优秀!