为了跳上Phusion Passenger的乐队,我们为一个小型rails应用程序设置了一个临时服务器来测试.
到目前为止,使用它非常好,它使安装/配置和部署应用程序变得轻而易举.问题是我们使用的网站不会经常受到影响,似乎在后台关闭服务器.这意味着当某人进入该站点时,他们会等待很长时间,直到它启动一个新服务器来处理该请求.我们已经阅读了文档,尝试了很多不同的设置(智能/智能-lv2模式,乘客时间等),但仍然没有找到真正的解决方案.
在浏览Google结果后,我们无法真正找到有用的信息.目前,我们有一个cron作业,每隔一段时间发出一次请求,试图让服务器保持运行.
是否有其他人遇到此问题,您对修复有任何建议吗?
我从mod_rails获得ruby实例变为"流氓" - 这些进程不再列在乘客状态并使用100%cpu.
除了安装god/monit来杀死实例,有人能给我一些关于如何防止这种情况的建议吗?我无法在日志中找到任何有帮助的内容.
我从一些书中读到,Phusion Passenger是轻松实现Ruby on Rails部署的答案.但我的朋友说,首先是Apache +一堆Mongrels,然后是lighttpd,然后是nginx,现在是Passenger,它似乎无穷无尽......
他还说他使用了使用Passenger的dreamhost,有时他看到他的请求没有被处理.
所以我想知道Passenger是否是RoR部署的最终答案?你使用它并使用"ab"命令来测试网站是否做得很好?
有没有办法限制Phusion Passenger在提供应用程序时使用的内存量?
我收到大量流量后,我的主人来了并杀了这个过程,所以我最终提供了空白页面.有什么我可以说的"嘿,不要使用超过100Mb,只产生3个进程,无论网站如何超载"
我的问题很简单:为什么要使用phusion/baseimage?
我已经阅读了该网站.我一直都喜欢它.它的销售优于基础,专为Docker而设计的超薄.话虽如此:那么为什么现在不使用它的官方版本呢?
phusion/baseimage 现在已经出去了一段时间,但是php,mysql等的官方版本仍然直接使用debian或ubuntu ...为什么?
我没有找到任何从phusion/baseimage继承自己的简单docker-esque(单实例)包.php7和nginx直接使用debian:jessie.mysql使用ubuntu.
整个问题phusion/baseimage是远离基于完全膨胀的"VM"容器.
那么,我的问题又来了:使用phusion/baseimage还值得吗?
更新:当输入'passenger-memory-stats'时,我显示:
---Passenger processes---
Processes: 0
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?为什么即使我在httpd.conf中添加并重启apache,乘客也不会启动?
我无法让Phusion Passenger在服务器上运行Ruby on Rails.我已按照Phusion网站上的所有说明操作并安装了乘客,并修改并创建了Apache VirtualHost以指向新目录并验证所有.conf文件是否已成功加载.还加载了httpd -M passenger_module.我还成功地在localhost上运行了Passenger Standalone和Rails服务器webrick,并且能够验证它是否适用于curl.
但是当我尝试从浏览器运行我的域时,我只得到404找不到的或者我在VirtualHost下由DocumentRoot指定的文件夹中创建的空索引文件(所以我知道它正在加载.conf并进入正确的目录)但它没有加载Rails应用程序....有人可以指出我做错了什么?这是我的设置和配置:
ruby -v:
ruby 2.1.2p95
rails -v:
Rails 4.2.3
passenger -v:
Phusion Passenger version 5.0.15
httpd -v:
Apache/2.2.27 (Unix)
opearting system:
CentOS
uname -i:
x86_64
Run Code Online (Sandbox Code Playgroud)
httpd.conf中:
Include "/usr/local/apache/conf/includes/mydomain.conf"
LoadModule passenger_module /usr/local/rvm/gems/ruby-2.1.2/gems/passenger-5.0.15/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-2.1.2/gems/passenger-5.0.15
PassengerDefaultRuby /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby
</IfModule>
Run Code Online (Sandbox Code Playgroud)
/usr/local/apache/conf/includes/mydomain.conf:
<VirtualHost 208.79.235.241:80>
ServerName mydomain.com
DocumentRoot /home/clevert/public_html/rails_apps/mydomain.com/public
PassengerRuby /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby
<Directory /home/clevert/public_html/rails_apps/mydomain.com/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
有关ruby-command的passenger-config:
Command: /usr/local/rvm/gems/ruby-2.1.2/wrappers/ruby
Run Code Online (Sandbox Code Playgroud)
passenger-config validate-install:
Checking whether this Passenger install …Run Code Online (Sandbox Code Playgroud) 我们有一个 Ruby on Rails 应用程序,它具有“搜索”功能(搜索某个公司)。从浏览器用户输入一些名称并点击搜索,这个搜索对外部系统进行一个休息 api 调用,并为我们提供一些搜索结果。
我们正在使用“ rest-client ”(用于 Ruby on Rails)。
我注意到这似乎工作了几个小时,突然间我的搜索似乎突然中断了,我可以在我的日志中看到:
Errno::ECONNRESET: 连接由对等方重置
我们试图通过查看日志来调查这个问题,但我们没有看到任何日志。
如果我们需要再次进行此搜索,我们需要重新启动乘客,然后它会立即生效。这只发生在生产环境中。我在分期测试它似乎工作得很好。
问题:
代码:
def call
resp_data = RestClient.get(@request_url, @header)
rescue => error
puts 'Exception: ' error.message
end
Run Code Online (Sandbox Code Playgroud) 我已经尝试重新启动apache并且仍然显示缓存的页面,因此必须有某个文件夹.我没有'公共/缓存',所以我应该看看其他地方?是否有可以触发此效果的URL标志?
我在rails应用程序上写了一个ruby,这个网站最重要的特色之一就是现场投票.我们完全希望在短短1分钟内收到10k的投票请求.与其他请求一起意味着我们可能会收到大量请求.
我最初的想法是将服务器设置为使用apache + phusion,但是,对于投票而言,我正在考虑在侧面编写php脚本并在memcached中写入/读取信息.数据只需要持续大约15分钟,因此在1分钟内写入数据库10,000次似乎毫无意义.我们还需要标记用户的ip,这样他们就不会投票两次,因此在memcached中更加复杂.
如果有人有任何建议或想法尽可能做到最好,请帮忙.
我目前正面临Passenger(4.0.18)与简单的Rails 4.0.0应用程序相结合的问题.问题是,在启动apache之后,第一个请求非常慢(通常为30.x秒).以下请求非常快,但如果应用程序空闲20秒以上,则会再次发生相同的情况.
现在,这个问题一般已经在这里讨论了几次,当然我已经调整了apache配置:
PassengerSpawnMethod smart
PassengerPoolIdleTime 1000
RailsAppSpawnerIdleTime 0
PassengerMaxRequests 1000
PassengerMaxPreloaderIdleTime 0
Run Code Online (Sandbox Code Playgroud)
但这根本没有帮助.如果我检查乘客状态,它会告诉我:
Version : 4.0.18
Date : 2014-01-31 13:06:59 +0100
Instance: 20601
----------- General information -----------
Max pool size : 6
Processes : 1
Requests in top-level queue : 0
Run Code Online (Sandbox Code Playgroud)
有趣的是,当我在做请求时对乘客状态进行"观察"时,这里没有任何改变.(特别是请求行).
我已经摆弄了tcpdump,所有请求都及时到达,因此没有可见的网络延迟.我还启用了apache扩展日志记录(添加了请求时间) - 这非常有趣,假设正常请求大约需要200毫秒,那么其中一个慢速请求只需要30.2秒.
知道这会导致什么吗?
Apache是2.2.15.(redhat版本,带有后向安全补丁... :))
提前谢谢,Björn