V2EX 首页   注册   登录
 NoAnyLove 最近的时间轴更新

NoAnyLove

  •   V2EX 第 207963 号会员,加入于 2016-12-28 06:36:26 +08:00,今日活跃度排名 1718
    NoAnyLove 最近回复了
    20 分钟前
    回复了 krisbai 创建的主题 Linux 请教下如何提取 curl 格式化输出的值
    话说直接用命令行下的 tr 和 grep 就行了啊,不需要安装额外的工具:

    echo '{"request_5xx":1,"traffic_write":10866877,"average_traffix_write":426.43633010242,"average_traffic_read":429.33143664404,"traffic_read":10940653,"average_request_time":0.44471063102306,"total_count":25483,"request_3xx":0,"request_2xx":23981,"request_4xx":1501,"total_request_time":11332.561010361}' | tr -d '"' | grep -oP '(traffic_write:\d+)|(request_4xx:\d+)'
    26 分钟前
    回复了 6mL 创建的主题 Linux 昨晚 Vultr 日本挂了 然后就连不上了
    INPUT 完全开放真的大丈夫吗?我一般都是设置例外允许的,或者用 ufw 简化一下也行啊。另外比较新的工具 nftables 和 firewalld 我还没用过,不知道好不好用
    28 分钟前
    回复了 6mL 创建的主题 Linux 昨晚 Vultr 日本挂了 然后就连不上了
    Orz,所以是你乱设置了 iptables 规则?
    1 天前
    回复了 Zioyi 创建的主题 Python 各位老师傅们, python2 支持异步 I/O 编程吗?
    @Zioyi Orz,突然反应过来,如果你的线程中不存在其他 I/O 操作,或者其他阻塞操作的话,按照之前的写法,你把 50 线程改成单线程,说不定会更快一些。。。。。。。 因为基本上对数据库的所有操作都放入临界区了。不过你之前既然说过 50 线程跑 14 分钟,单线程跑 40 分钟,那我只能推断你的线程中还存在了其他阻塞操作
    1 天前
    回复了 Zioyi 创建的主题 Python 各位老师傅们, python2 支持异步 I/O 编程吗?
    @Zioyi 建议你跑一跑代码,对比一下性能,记得反馈最终结果哦
    1 天前
    回复了 Zioyi 创建的主题 Python 各位老师傅们, python2 支持异步 I/O 编程吗?
    @Zioyi 没遇到过这种情况,不过感觉(Lock wait timeout exceeded; try restarting transaction)是因为你的并发太高了?不过如果使用了 Lock,同时只有一个线程对数据库读写的话,那么感觉有点跑不够。几个选择:

    1. 把 lock 换成 threading.BoundedSemaphore,然后设置一个合适的并发值(多试几次,找出一个合理的值,记得对报错的情况要 try-except )
    2. 直接引入 gevent, monkey.patch_all(),并发 50 个协程,如果出现同样的错误提示,那么很可能是并发高了,同样可以引入 gevent.lock.BoundedSemaphore 来控制并发数,或者减少协程数目。

    如果出现了 2 这种情况,使用协程和多线程的性能差距应该不会特别大。异步 I/O 的性能高需要有足够高的并发数,如果瓶颈是在并发数上,你还可以试试更换其他操作 MySQL 的 Python 库,比如我前面提到的 ultramysql,主页上写的这个库支持个 gevent,star 数也不低,但是居然找不到官方文档,Orz
    2 天前
    回复了 magic3584 创建的主题 Python Python 怎么下载磁力/电驴/迅雷的资源
    这种时候,你只需要遵循 KISS 原则就好了,有现成的东西当然就是拿来用咯
    2 天前
    回复了 Zioyi 创建的主题 Python 各位老师傅们, python2 支持异步 I/O 编程吗?
    那么问题来了,具体是什么数据库?经过什么中间架构进行连接的吗(比如是不是要经过 HTTP 请求对数据库进行操作)?还是直接对数据库进行操作?用的什么 Python 库对数据进行操作?

    如果要高效地对数据库进行异步操作,那么操作数据库的 Python 库也必须是异步的,比如 aiomysql。asyncio 至少需要 3.3 才能支持,如果你坚持使用 Python 2 的话,可以选择 gevent,并且搭配支持 gevent 的异步数据库操作库,比如 ultramysql

    话说,既然你的并发依赖的是数据本身提供的锁机制,为什么会觉得瓶颈是因为 Python 线程的竞争?你在 Python 上还做了什么同步机制?
    DigitalOcean
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   鸣谢   ·   2443 人在线   最高记录 3541   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.7.5 · 28ms · UTC 03:33 · PVG 11:33 · LAX 20:33 · JFK 23:33
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1