我的rails应用程序在瘦服务器上运行,我想使用apachebench进行基准测试
我使用的命令是
ab -n 1 -c 1 http://localhost:3001/welcome/search?query="doctor"&rad=5
Run Code Online (Sandbox Code Playgroud)
但瘦服务器没有采取这个url.Its给
!! Invalid Request
Run Code Online (Sandbox Code Playgroud)
任何人都可以帮助我如何给url这样瘦,用查询字符串接受url
这是关于nginx和rails环境中的瘦身的新手问题.在轨道上阅读/学习时,我经常听说nginx和thin是一个很好的组合,适用于rails网站.在阅读每个描述时,他们都将自己描述为Web服务器,因此我对组合带来的内容感到困惑.如果有人可以简要描述它们是什么以及它们如何相互补充,我将非常感激.
谢谢!
我为我的开发/测试环境中的每个应用程序运行Thin Webserver.当我使用Mongrel和Rails 2.x时,我所要输入的只是script/server让它运行我选择的网络服务器.但是使用Rails 3,我必须每次都指定Thin.有没有办法让我的Rails应用程序只需键入rails s而不是rails s thin?
我是红宝石的新手,学习Sinatra.虽然通过'sinatra'直接要求和设置路径来创建Sinatra站点非常简单并且有很好的文档记录,但通过要求'sinatra/base'和编写一个继承自'Sinatra::Base' 的类来创建应用程序,虽然仍然相对容易,但是文档记录很差(可能因为它是一个最近Sinatra的特色).
而这正是我在做的事情.我在Sinatra部分没有太多麻烦,但是我在rackup/thin/server部分遇到了一些麻烦.显然,有两种方法可以部署应用程序:使用Sinatra本身(使用该run!方法)和使用rackup文件(通常config.ru).
使用Sinatra的run!方法非常直观,就像一个魅力,但显然如果我想在heroku上部署我的应用程序它不起作用.事实上,我在GitHub上遇到的几乎所有Sinatra应用都使用了一个config.ru文件.
使用rackup文件可能同样直观,但我无法理解如何将选项从Sinatra应用程序传递到服务器(ir:端口).我尝试将选项合并到rackup的默认选项数组:
MyApp::App.default_options.merge!(
:run => false,
:env => :production,
:port => 4567
)
run MyApp::App
Run Code Online (Sandbox Code Playgroud)
通过直接向应用添加选项:
MyApp::App.set :port, 4567
MyApp::App.set :run, false
MyApp::App.set :env, :production
run MyApp::App
Run Code Online (Sandbox Code Playgroud)
通过在应用程序类中设置选项:
module MyApp
class App < Sinatra::Base
set :port, 4567
set :run, false
set :env, :production
# ...
# config.ru
require 'app'
run MyApp::App
Run Code Online (Sandbox Code Playgroud)
上述所有方法都失败了,要么显示错误消息,要么不考虑任何选项.那么在使用rackup文件时,有没有办法通过Sinatra应用程序将选项传递给rackup/thin/the sever?或者问题中的选项应该通过命令行选项直接传递给rackup/thin/the sever?
作为问题的参考,这里是我正在构建的小型Sinatra应用程序:https://github.com/AzizLight/Wiki/
新的Sinatra,只是开发服务器启动和运行,但rackup使用WEBrick而不是Thin,Thin已经安装了宝石,这必须是一个简单的配置调整,但我不知道在哪里.哦,当你在它,Thin当我更改源代码时自动刷新?WEBrick当我更改源代码时,似乎必须停止并重新启动.
编辑
正如所建议的那样,thin start对我的设置进行调整.它本身会抛出一个错误"start_tcp_server": no acceptor (RuntimeError),这意味着我已经在该端口上运行了另一个服务.要解决这个问题,我只需运行thin start -p 9292.希望这有助于其他人.
我正在尝试在Cedar堆栈上部署Sinatra流式SSE响应应用程序.不幸的是,虽然它在开发中完美运行,但是一旦部署到Heroku,callback或者errback在调用连接时永远不会被调用,导致连接池被填满过时的连接(永远不会超时,因为数据仍在服务器上发送给他们侧.)
来自Heroku文档的Relvant信息:
长轮询和流媒体响应
Cedar支持HTTP 1.1功能,例如长轮询和流式响应.应用程序有一个初始的30秒窗口,以单个字节响应客户端.但是,此后发送的每个字节(从客户端接收或由您的应用程序发送)重置滚动55秒窗口.如果在55秒窗口期间没有发送数据,则终止连接.
如果您要发送流响应,例如服务器发送的事件,则需要检测客户端何时挂断,并确保您的应用服务器立即关闭连接.如果服务器保持连接打开55秒而不发送任何数据,您将看到请求超时.
这正是我想要做的 - 检测客户端何时挂断,并立即关闭连接.然而,关于Heroku路由层的一些东西似乎阻止Sinatra像通常那样检测流关闭事件.
一些示例代码可用于复制此代码:
require 'sinatra/base'
class MyApp < Sinatra::Base
set :path, '/tmp'
set :environment, 'production'
def initialize
@connections = []
EM::next_tick do
EM::add_periodic_timer(1) do
@connections.each do |out|
out << "connections: " << @connections.count << "\n"
end
puts "*** connections: #{@connections.count}"
end
end
end
get '/' do
stream(:keep_open) do |out|
@connections << out
puts "Stream opened from #{request.ip} (now #{@connections.size} open)"
out.callback do
@connections.delete(out)
puts "Stream closed from #{request.ip} (now …Run Code Online (Sandbox Code Playgroud) 我一直在使用Thin来运行我的ruby Sinatra应用程序,但我现在正在切换到Puma.Thin创建log/thin.log我自己使用的日志.我注意到Puma没有生成日志文件(不是我能看到的).我已经尝试使用谷歌搜索文档,但没有找到任何东西.
我想知道是否/如何在Puma中指定日志路径.
任何帮助将非常感激.
亚历克斯
我正在开发一个通过ajax提交法语翻译的rails应用程序,由于某种原因,我在日志中不断收到以下错误:
Encoding::CompatibilityError incompatible character encodings: UTF-8 and ASCII-8BIT
有谁知道如何解决这一问题?
FIX:这适用于WEBrick服务器
放置# encode: UTF-8在您希望使用不同字符的每个文件的顶部
我无法让这个在带有Thin的rails服务器上工作...其他人遇到这个?
上下文:要将localhost作为SSL运行,我按照此站点上的说明进行操作
设置SSL证书后,为了运行本地rails服务器,该站点说:
thin start --ssl <some more options>
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我注意到我不再看到Rails日志被打印到STDOUT.
我如何通过--ssl和其他选项thin?这不起作用:
bundle exec rails s thin --ssl
.../rails/commands/server.rb:33:in `parse!':
invalid option: --ssl (OptionParser::InvalidOption)
Run Code Online (Sandbox Code Playgroud)
或者,如何thin将Rails日志输出到STDOUT?
我是一名非常缺乏Ruby经验的iOS开发人员,他试图在Heroku上运行API时遵循" iOS移动开发入门和Sinatra API ".
我抓住了Git上的示例项目,所以我知道我的设置与我应该拥有的相同.
我已经安装了捆绑包,并认为一切都准备好了,但每当我做的时候我都会foreman start得到这个:
2:14:56 web.1 | started with pid 5140
12:14:57 web.1 | No adapter found for {MY PROJECT'S FILEPATH}
12:14:57 web.1 | process terminated
12:14:57 system | sending SIGTERM to all processes
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者我需要做些什么来让它运行?
谢谢!