服务器 Gind.cn

服务器问题集锦,包括 Linux(Ubuntu, Centos,Debian等)和Windows Server服务器

使用Puppet部署我们自己的软件?

(在这个问题上,我很抱歉,我通常是一个程序员,而不是系统pipe理员,但是我自己做了一些事情的自动化,并且清理了一些其他自动化的东西,但是没有以最漂亮的方式。:-) 我一直在环顾各种各样的工具,将软件部署自动化到cfengine,Puppet和Chef等一堆服务器上。 到目前为止,木偶看起来是最有吸引力的,但我当然还没有承诺任何东西。 这些工具看起来像是可以很好地保持一堆服务器与预先打包的软件的最新状态。 我没有得到的是:如何使用工具(如Puppet)来pipe理我们自己的内部软件的部署? 我觉得我很茫然,因为我看过一千个教程展示了如何让Apache ensure => latest (这非常酷),但是没有什么和我今天的用例相对应,这更像是: 当一个人按下button时, 从版本控制库B中拉出分支A. 运行命令C来编译它 将二进制文件D复制到服务器E1到E10 在每台服务器上运行命令F使所有更改生效 木偶听起来不错,我完全看到声明式,幂等configuration优于一些shell脚本的优点,但我还没有看到任何教程“你想更新你的shell脚本到Puppet(或厨师,或cfengine),所以这就是你应该做”。 有这样的事吗? 其他人是否明白如何把Puppet文档中提供的内容复制到我想要的行为上? 我只是没有得到它? 到目前为止,听起来对于我来说,人类(#1)会手动打包Puppet外部的软件(#2和#3),手动更新Puppetconfiguration,这将触发Puppet更新服务器。 .. 也许? (我在这里有点困惑,因为我敢肯定你可以告诉。) 谢谢!

在MySQL / InnoDB中设置事务的时间限制

这是从这个相关的问题出发,我想知道如何强迫两个事务顺序发生在一个平凡的情况下(其中两个都只在一行上运行)。 我得到了一个答案 – 使用SELECT … FOR UPDATE作为两个事务的第一行 – 但这会导致一个问题: 如果第一个事务从不提交或回退,那么第二个事务将被无限期地阻塞。 innodb_lock_wait_timeoutvariables设置客户端尝试进行第二个事务的秒数,然后告诉“对不起,再试一次”……但据我所知,他们会再次尝试,直到下一次服务器重新启动。 所以: 如果一个交易永远持续下去,肯定有办法强制ROLLBACK ? 我必须诉诸使用守护进程来杀死这样的事务,如果是这样的话,这样的守护进程是什么样的? 如果连接被wait_timeout或interactive_timeout中间事务wait_timeout ,事务是否回滚? 有没有办法从控制台testing这个? 澄清 : innodb_lock_wait_timeout设置事务在放弃之前将等待锁释放的秒数; 我想要的是一种迫使锁被释放的方式。 更新1 :下面是一个简单的例子,它演示了为什么innodb_lock_wait_timeout不足以确保第二个事务不被第一个事务阻塞: START TRANSACTION; SELECT SLEEP(55); COMMIT; 使用innodb_lock_wait_timeout = 50的默认设置,此事务在55秒后完成而没有错误。 如果在SLEEP线之前添加UPDATE ,则从另一个客户端启动第二个事务,该客户端尝试SELECT … FOR UPDATE同一行,这是第二个事务超时,而不是睡着的那个事务。 我正在寻找的是一种强制结束这个交易的安宁睡眠的方法。 更新2 :为了响应hobodave关于上述示例的真实性的问题,以下是一个备用scheme:DBA连接到活动的服务器并运行 START TRANSACTION SELECT … FOR UPDATE 第二行locking应用程序频繁写入的行。 然后DBA被打断,走开,忘记结束交易。 应用程序停止运行,直到行被解锁。 我想尽量减less由于这个错误导致应用程序被卡住的时间。