Articles of ruby

解释这个奇怪的环境相关的Ruby性能问题

我们正在诊断我们的应用程序服务器上的Ruby性能问题,我们已经设法减less到一个简单的testing用例。 我们将开发集群中的一台机器的性能与我们生产数据中心的一台机器进行比较。 我们使用这个简单的Ruby oneliner: 5000000.times { a = []; a << 1; a.length } 而我们的testing结果表明,生产机器的速度一直慢了55%。 事情显然可能是,为什么我们认为这不是: 不同的软件 – 开发和生产机器是从相同的Ubuntu OS,Ubuntu安装脚本,软件包仓库安装的,我们使用puppet来保持configuration的一致性。 不同的硬件 – 可能,但见下文。 不同的负载 – 既不是开发也不是生产机器显着加载,并再次看到下面。 为什么我们不认为它是负载或硬件? 首先,他们有类似的负载和硬件configuration。 其次,我们写了一个pythontesting脚本: n = 10000000 while n > 1: n = n – 1 a = [] a.append(4) len(a) 生产速度比开发速度快 10%,这是我们所期望的。 如果问题是负载或硬件,那么Python的生产速度是不是会变慢呢? 简而言之,两台机器都使用ESXi虚拟化 开发虚拟机有4GB内存,并在双核四核AMD Opteron 2376 @ 2.294Ghz […]

如何设置Nginx与清漆

我想看看如何configurationNginx和Varnish。 我在两个IP上运行多个PHP站点和Rack-Sinatra站点作为虚拟主机。 我想阻止Nginx提供静态文件,因为我注意到一些延迟。 编辑 :我已经更改为Nginx,但提供的答案很容易移植到Nginx。

是否可以使用自定义脚本进行PAMvalidation?

我想让用户使用我的rails应用程序的凭据login到sftp帐户。 如果我理解正确,我应该以某种方式使用PAM。 但是我没有find有关如何做到这一点的任何信息?

为所有用户更改PATH环境variables。 (Ubuntu的)

我最近在Ubuntu 8.04服务器上编译了Ruby Enterprise Edition(REE)。 我想更新我的path,以确保这个新版本的Ruby(在/opt/ruby_ee/bin )取代/usr/local/bin的旧版本。 (尽pipe如此,我仍然想要旧版本。) 我想这些PATH更改影响所有用户和crontabs。 尝试解决scheme#1: REE文档build议将REE bin文件夹放置在/etc/environment中的全局PATH开头。 我改变了这个文件中的PATH来读取: PATH="/opt/ruby_ee/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 这完全不影响我的PATH 。 试图解决scheme2: 接下来,我按照这些说明更新了/etc/login.defs和/etc/crontab的PATH设置。 (我没有改变/etc/sudoers 。) 即使注销并重新启动服务器,也不会影响我的PATH 。 其他信息: 我似乎在这里描述了同样的问题 。 我正在使用命令“ echo $PATH ”和“ ruby -v ”进行testing。 我的壳是bash。 我的.bashrc不覆盖我的path。 是的,我听说过Ruby Version Manager项目。 ;)

将variables传递给厨师模板的正确方法是哪种方法?

看看这个官方文档: https : //docs.chef.io/resource_template.html我看到传递给模板资源的variables的例子,使用“{”,“({”或“(”来范围variables。 我找不到解释差异的地方,或者为什么我会用另一种forms。 运行配方时真的有实际的区别吗? 例1: template '/tmp/config.conf' do source 'config.conf.erb' variables( :config_var => node['configs']['config_var'] ) end 例2: template '/tmp/config.conf' do source 'config.conf.erb' variables{ :config_var => node['configs']['config_var'] } end 例3: template '/tmp/config.conf' do source 'config.conf.erb' variables({ :config_var => node['configs']['config_var'] }) end

通过DNSredirect到www子域

是否可以设置DNSlogging来将所有example.com/*stream量redirect到www.example.com/* ? 我正在Heroku的Cedar堆栈上运行一个Sinatra应用程序。 我设置了Heroku的Custom Domains插件 ,文档讨论了将stream量redirect到特定域 。 我还阅读了关于如何使用Rack Rewrite来做到这一点。 不过,我想知道是否有办法通过DNS来做到这一点,即没有击中我的应用程序。

脚本需要(一些)根访问

我有一个关于系统pipe理脚本的一般性问题,这些脚本需要使用root访问来执行“some”命令,而其他的作为普通的非root用户(即myusername等)。 我应该提到我在Linux Red Hat 4系统上使用Ruby 1.8.6。 我目前看到的build议是: 允许从sudoers访问: USERNAME = NOPASSWD:/ path / to / script,/etc/init.d/httpd,/ path / to / somethingelse 这个语法是正确的吗? 如果是这样,我是否正确,我想列出脚本中所需的所有特定命令,我不想被提示input密码? 设置suid http://www.wellho.net/mouth/733_Perl-for-Systems-Admin-suid-scripts.html 以root权限运行Perl脚本: a)将脚本的所有者设置为root b)在文件上设置suid位(chmod u + s filename) c)closures读取权限,然后执行权限到文件给除root以外的所有人(chmod go = x) 但其他的研究表明,你只能在以后的Linux系统上设置suid的二进制文件(我的脚本实际上是在RH4的旧版本上运行,但是我们可能会升级,所以我想向前兼容)。 我不认为我想为此创build一个二进制文件! '用生成的公钥/私钥使用ssh。 该键可以configuration为只允许执行某些命令。 在sudo中留下任何需要root的脚本命令: 系统'sudo rake ts:rebuild'(当然这有所有那些密码提示的缺点!) 以root身份执行脚本 但是,我想作为普通用户运行的命令呢? 以root su用户身份执行(对于需要以普通用户身份运行的任务) '以root身份运行脚本,以root用户身份执行一系列任务,su用户以newUser身份执行一系列任务,退出(退出到root用户)以root用户身份执行更多任务。 (由James提出) 我对这个话题没有更好的理解感到羞愧,但是我对有多lessRuby脚本书感到有些惊讶,“我提到的这些脚本书没有解决这个问题! 我想这更像是一个'尼克斯'的事情,但似乎要做大量使用的事情,你可能会遇到这种情况。 编辑:有些东西像mysql我可以在命令中使用选项–password,所以我用它来做到这一点: puts "Remote […]

在Apache + Passenger上运行Ruby on Rails应用程序到很多内存

我正在使用passenger / Apache 2.2在我的服务器上运行redmine(RoR应用程序)。 乘客和ruby正在使用太多的记忆。 有没有更多的内存有效的方式来运行redmine / ruby​​? 我只需要支持六个redmine用户。 我想继续使用Apache,但我打开所有不是“使用nginx / lighttpd”的build议。 (以下数据来自512MB VPS,因此Ruby仅为redmine使用128MB以上) user ……. %mem ……. process ———————————– www-data … 13.6 0:00.65 ruby1.8 www-data … 12.2 0:04.86 ruby1.8 www-data … 9.4 0:04.15 apache2 www-data … 9.0 0:13.94 apache2 www-data … 3.2 0:00.27 apache2 root … 2.5 0:00.23 apache2 root … 1.9 0:01.19 ruby1.8 […]

RubyOnRails廉价的主机服务

我正在寻找托pipeRoR(Ruby on Rails)应用程序的托pipe服务。 请build议托pipe服务,我可以得到一个便宜的计划。 当你公开发布时,什么是最好的select? 谢谢。

如何在我的网站停用时收到提醒?

我的博客是一个自定义的ruby/机架应用程序,并且每两周随机崩溃。 有时我几天没有注意到,如果发生这种情况,我希望立即得到通知。 什么是最好的办法呢? 我正在运行Centos 5.3,Nginx,Passenger,Rack等。 我已经考虑过想办法给自己发一封错误日志的尾巴,因为这样可以帮助我捕捉所有事情,而不仅仅是一个应用程序(它会告诉我缺less的链接等)。 有没有一个简单的方法来做到这一点? 谢谢!