草庐IT

非阻塞

全部标签

python - redis-py 订阅在读取消息时被阻塞

最近我使用python和redis构建了一个smarlmessge-driven项目。我使用一个线程订阅redischannel(这里称为消息线程);定时器线程;和一个工作线程;当消息线程收到足够的消息时,它会向worker发送一个任务。我使用redis-py与redis通信消息线程:订阅redis;whileTrue:getmessage;iflen(messages)>threashold:posttasktoWorker工作线程:whileTrue:waittaskevent;dotask;//thismaybeheavy问题来了:工作一段时间后,redis-pysubpub被阻

ruby-on-rails - 由于 Phusion Passenger 队列阻塞导致 Web 服务负载过重

我们正在使用Ruby2onRails4、Mongoid4、MongoDB2.6开发Web服务。它使用Sidekiq3.3.0和Redis2.8,并在PhusionPassenger5.0.4+Nginx1.7.10上运行。它仅通过JSONAPI为移动客户端和AngularJS网络客户端提供服务。通常一切正常,API处理和响应不到1秒。但在高峰时段,服务负载很重(API呈现为503ServiceUnavailable)。下面是我们的Nginx和Mongoid配置:Nginx配置passenger_root/home/deployer/.rvm/gems/ruby-2.1.3/gems/p

node.js - 如果 800k 记录需要 50 秒,随着服务器变得理想,队列中的所有 http 待处理请求将阻塞 50 秒

如果800k记录需要50秒,则队列中的所有http待处理请求将阻塞50秒,因为服务器变得理想。varhttp=require("http");varurl=require("url");varMongoClient=require('mongodb').MongoClienthttp.createServer(function(request,response){if(url.parse(request.url).pathname=='/search'){varcollection=db.collection('documents');//supposeittakes800krecor

java - 非阻塞异步 mongo java/scala 驱动程序可以阻塞线程——如何处理?

使用非阻塞异步mongojava/scala驱动程序,可以为无法通过空闲连接直接执行的操作定义等待时间和等待队列大小。设置这些值时,mongo驱动程序将使线程等待可用连接。对于使用非阻塞异步IO编写的应用程序来说,这种行为是非常危险的。这些应用程序使用非常有限的线程数(=内核数)。阻塞其中一个线程会阻塞整个应用程序。对于这种应用程序,推荐的方法是什么?我们是否应该将所有这些等待设置设置为0并在应用程序中重试处理MongoWaitQueueFullException?当连接空闲时,驱动程序是否应该调用应用程序回调?预先感谢您的回答! 最佳答案

JUC并发编程学习笔记(九)阻塞队列

阻塞队列阻塞队列队列的特性:FIFO(fistinpuptfistoutput)先进先出不得不阻塞的情况什么情况下会使用阻塞队列:多线程并发处理、线程池学会使用队列添加、移除四组API方式抛出异常不抛出异常,有返回值阻塞等待超时等待添加addofferputoffer(Ee,longtimeout,TimeUnitunit)移除removepolltakepoll(longtimeout,TimeUnitunit)检测队首元素elementpeek1、抛出异常publicstaticvoidtest01(){//队列是有大小的,创建时要明确该队列最大能有几个元素BlockingQueueque

Node.js API 因并发连接而阻塞

这是我第一次使用Node.js和Mongo,所以请原谅任何无知。我来自PHP背景。我的理解是Node.js的扩展性很好,因为它具有事件驱动的特性。因此,我在Node中构建了我的API,并一直在本地主机上对其进行测试。今天,我将它部署到我的云服务器上,一切正常,除了......随着请求开始堆积,需要很长时间才能完成。只有2个客户端连接到API,当两个客户端都试图同时发出多个请求(有时确实会发生)时,我已经看到30秒以上的页面加载时间。API完成的大部分工作是(a)读取/写入驻留在云端第二台服务器上的MongoDB(b)向其他API、网站等发出请求并返回结果。这两个操作都不应该阻塞,但我可

【Java】多线程案例(单例模式,阻塞队列,定时器,线程池)

❤️Author:老九☕️个人博客:老九的CSDN博客🙏个人名言:不可控之事乐观面对😍系列专栏:文章目录实现安全版本的单例模式饿汉模式类和对象的概念类对象类的静态成员与实例成员懒汉模式如何保证懒汉模式的线程安全阻塞队列让多个服务器之间充分解耦能让请求进行"削峰填谷"标准库中的阻塞队列自己实现阻塞队列定时器标准库计时器线程池用户态和内核态标准的线程池库实现安全版本的单例模式单例模式是设计模式之一。代码当中的某个类,只能有一个实例,不能有多个。单例模式分为:饿汉模式和懒汉模式饿汉模式饿汉模式表示很着急,就想吃完饭剩下很多碗,然后一次性把碗全洗了。就是比较着急的去创建实例。用static来创建实例,

mongodb - mongod --repair 仍然是 MongoDB 1.8 中的阻塞任务吗?

我有一个5GB的数据库,我想对其进行压缩和修复。不幸的是,我有一个正在该数据库上运行的事件应用程序。我想知道使用MongoDB1.8运行mongod--repair任务是否会阻止对数据库的所有其他写操作。我不想关闭整个应用程序几个小时... 最佳答案 你可以看看--journalkey。它为最后的操作保留二进制日志,恢复可能比修复花费的时间少得多。http://www.mongodb.org/display/DOCS/Durability+and+Repair 关于mongodb-mon

node.js - 如何通过mongoose非阻塞获取大数据?

我如何通过mongoose获得一个大集合,我得到返回的每个文档,而不是一个包含整个集合的大数组?目前我正在使用以下查询:varquery=templateData.find({});query.exec(function(err,docs){//docsasarray});这样,查询函数就像是阻塞IO而不是非阻塞。有没有办法让它变得更加非阻塞? 最佳答案 好吧,因为我在发布这个问题后又看了一眼mongoose文档,所以我克服了stream()函数,它完美地实现了非阻塞操作。怪我,但我认为在mongoose文档中可以更无礼地提到它:h

javascript - node.js 非阻塞 mongodb 调用

我是Node.js的新手,正在开发一个使用MongoDB作为数据库的项目。一些MongoDB查询是昂贵的。例如,我有一个包含数百万条记录的集合,根据搜索条件,查找查询可能需要1-2秒。调用MongoDB(使用Mongoose驱动程序)是否会阻止Node.js处理其他请求,直到MongoDB返回结果?此外,是否有任何工具可以识别具有阻塞性质的潜在代码行?谢谢。 最佳答案 @user949300提供了正确答案。一般来说,如果它们在函数签名中有回调,它们就是非阻塞的。例如MongoClient.connect('mongodb://127