我正在运行 Rails 3.0.5,控制台上报告一个页面需要 60 毫秒,但是如果我查看 Firefox Net 加载时间图表,它需要 2.9 秒。如果我ab在 Bash 上运行命令,它说需要 300 毫秒。
因此,如果移除支架 javascripts(其中 6 个),则需要 1.9 秒……但我想知道为什么这么慢?活下去不是光荣的吗?
同样奇怪的是 Firefox 显示 4 个文件正在同时下载——我认为 Webrick 一次只支持 1 个连接?
(改为使用杂种或“瘦”会使事情变得不同或更好吗?)
还奇怪的是,如果我
ab -n 10 -c 5 http://www.somesite.com:8080
Run Code Online (Sandbox Code Playgroud)
需要 3 秒,为了测试如何keep-alive支持,我使用了以下-k选项:
ab -n 10 -c 5 -k http://www.somesite.com:8080
Run Code Online (Sandbox Code Playgroud)
但现在总时间从 3 秒变为 4.5 秒。不keep-alive应该让它更快,并且keep-alive由 Webrick 支持?
另外,如果它支持并发连接,那么如果某些代码使用类变量来处理事情,那么不会发生竞争条件吗?(因为类变量内容跨请求保持不变)
问题重写了.
我正在开发一个简单的Web框架,并且遇到了Rack或我正在使用的瘦服务器的奇怪行为.
我试图尽可能地简化config.ru文件以获得以下代码来重现奇怪的问题:
app = Proc.new do |env|
content = "<p>????</p>"
headers = {'Content-Type' => 'html/text; charset=utf-8', 'Content-Length' => content.length.to_s}
[200, headers, [content]]
end
run app
Run Code Online (Sandbox Code Playgroud)
上面的代码是一个普通的Rack进程,内容是一个HTML段落,其中包含四个字母的阿拉伯语单词.现在,运行瘦服务器:thin start,我正在等待网页的来源:
<p>????</p>
Run Code Online (Sandbox Code Playgroud)
虽然它变成了:
<p>????
Run Code Online (Sandbox Code Playgroud)
只有,没有结束标记.如果我插入一个英文单词而不是阿拉伯语单词,服务器可以正常工作,所以我得出结论,问题与阿拉伯语的编码或多字节字符有关.
我正在使用Ruby 1.9.2.该文件的编码是UTF-8.如果我只是puts "<p>????</p>"在没有Rack或Thin服务器的情况下尝试使用Ruby,那么Ruby运行良好.
因此,当使用Rack和Thin +消失字符的数量==文本中的阿拉伯字符数时,问题就是阿拉伯语文本之后的许多字符消失了.
有什么想法吗?
当我启动 rails.js 时,如何摆脱这个警告/错误。
在没有 :safe 选项的情况下调用“load”——默认为安全模式。
=> Booting Thin
=> Rails 3.2.13 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
Called 'load' without the :safe option -- defaulting to safe mode.
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3001, CTRL+C to stop
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Capistrano 3.0/Thin/NGINX部署到Raspberry Pi我已经让它工作了,但在我的重启块我有
namespace :deploy do
desc 'Restart application'
task :restart do
on roles(:app), in: :sequence, wait: 5 do
execute '/etc/init.d/thin restart'
execute 'sudo /etc/init.d/nginx restart'
end
end
end
Run Code Online (Sandbox Code Playgroud)
对此我很感兴趣
INFO [128fb9a3] Running /etc/init.d/thin restart on raspberrypi.local
DEBUG [128fb9a3] Command: /etc/init.d/thin restart
DEBUG [128fb9a3] /usr/bin/env:
DEBUG [128fb9a3] ruby_executable_hooks
DEBUG [128fb9a3] : No such file or directory
DEBUG [128fb9a3]
Run Code Online (Sandbox Code Playgroud)
如果我通过SSH连接到PI并以root身份运行它们,这些命令似乎工作正常.
我应该提一下,我几乎使用了这个教程:http://creativepsyco.github.io/blog/2013/04/10/deploying-rails-on-nginx-and-thin/来设置东西
我从某人那里继承了一个VM(Linux OS)。它在tomcat和oracle 11.2.0数据库内部部署/运行了一个Java应用程序“ bob”。我按照以下示例在beanshell(Java的轻量级)中编写了一个简单的数据库连接,它执行得很好,但是我想到了一个问题。
Connection con = DriverManager.getConnection("jdbc:oracle:thin:hostname:1521:sidname","username","password");
Run Code Online (Sandbox Code Playgroud)
我注意到ojdbc14.jar从Oracle安装目录/somepath/oracle/product/11.2.0/xe/jdbc/lib/{ojdbc5.jar中找到了/somepath/tomcat/webapps/bob/WEB-INF/lib/ojdbc14.jar ,ojdbc6_g.jar,ojdbc6.jar}找到三个ojdbc jar文件。
在这种情况下,哪个jar文件使用瘦驱动程序以建立数据库连接并成功运行sql查询语句?
我怎样才能提高为最大允许值QUERY_STRING利用要么thin,puma或unicorn在Rails的Web服务器?我试图向我的 Rails API 发出超过限制的 POST 请求,只需要增加服务器的最大阈值
POST 上的特定错误: Invalid request: HTTP element QUERY_STRING is longer than the (1024 * 10) allowed length.
我只在另一个地方遇到过这个问题(HTTP 查询字符串长度与瘦 web 服务器),我不太明白答案(特别是,在哪里可以找到要在该答案中编辑的 C 文件?)
我正在尝试在Windows上安装Thin(ruby 1.8.6(2007-09-24 patchlevel 111)[i386-mswin32])但是收到错误消息:
C:> gem install thin构建原生扩展.这可能需要一段时间...错误:安装瘦时出错:错误:无法构建gem本机扩展.
C:/rails/ruby/bin/ruby.exe extconf.rb检查c.lib中的main()...没有创建Makefile
NMAKE
Microsoft(R)程序维护实用程序版本1.50版权所有(c)Microsoft Corp 1988-94.版权所有.
Run Code Online (Sandbox Code Playgroud)cl -nologo -I. -I. -IC:/rails/ruby/lib/ruby/1.8/i386-mswin32-一世.-MD -Zi -O2b2xg- -G6 -c -Tcparser.c'cl'未被识别为内部或外部命令,可操作程序或批处理文件.NMAKE:致命错误U1077:'C:\ WINDOWS\system32\cmd.exe':返回代码'0x1'停止.
Gem文件将保留在C:/rails/ruby/lib/ruby/gems/1.8/gems/thin-1.2.5中进行检查.结果记录到C:/rails/ruby/lib/ruby/gems/1.8/gems/thin-1.2.5/ext/thin_parser/gem_make.out
谷歌似乎没有帮助我.有人知道发生了什么事吗?
谢谢
我在Rails 2.3.2上有一个小应用程序,配有nginx + thin(127).OS FreeBSD 7.1,DB - Posgresql.
Twise本周我的应用已经下降了.在日志中我得到类似的东西(每秒约2-50个请求):
/!\ FAILSAFE /!\ Mon Oct 04 20:13:55 +0300 2010
Status: 500 Internal Server Error
bad content body
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/utils.rb:311:in `parse_multipart'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/request.rb:125:in `POST'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:428:in `request_parameters'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:381:in `parameters'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1279:in `assign_shortcuts'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:518:in `process_without_filters'
Run Code Online (Sandbox Code Playgroud)
要么:
/!\ FAILSAFE /!\ Tue Nov 09 09:24:39 +0200 2010状态:500内部服务器错误IP欺骗攻击?!HTTP_CLIENT_IP ="XX.XX.XX.XX"HTTP_X_FORWARDED_FOR ="192.168.XX.XX,YY.YY.YY.YY"
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/request.rb:229:in `remote_ip'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1372:in `request_origin'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1304:in `log_processing_for_request_id'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:1296:in `log_processing'
/usr/home/../../history/vendor/rails/actionpack/lib/action_controller/base.rb:522:in `process_without_filters'
Run Code Online (Sandbox Code Playgroud)
在该系统进入最大打开文件限制(我猜它通过postgesql会话打开)后,postgresql无法建立新的连接和应用程序下降.
任何建议,我如何保护我的SSpp在这种情况下?
在针对Heroku上托管的应用程序执行负载测试后,我发现大多数数据库密集型请求需要50-200ms,具体取决于负载.无论负载如何,它都不会变慢.但是,看似随机,请求将彻底超时(30秒或更长时间).
在Heroku上,为什么一个性能相对较高的查询/请求可以在10次中完美地工作8次,并且当负载增加时,彻底超时为10次中的2次?
如果这对于Heroku本身来说似乎是一个问题,我想首先回答一个问题,即"坏代码"是否会以某种方式导致这个问题 - 或者它是否显然是一个问题.
更多信息:
多个Dynos Cedar Stack Dedicated Heroku DB(16个连接,1.7 GB RAM,1个comp.单元)Rails 3.0.7
提前致谢.
运行"瘦"Web服务器时遇到问题.看起来安装是成功的,但是当我运行"瘦启动"时,看起来好像Thin开始初始化但是却找不到它需要的一些资源.
下面是我的终端会话的审计跟踪.有人可以提供这方面的手吗?根据Thin文档,安装正确完成.谢谢
Rails 3.2.12
ruby 1.9.3
root@pgateway:/var/www/testapp# gem install thin
Fetching: eventmachine-1.0.0.gem (100%)
Building native extensions. This could take a while...
Fetching: daemons-1.1.9.gem (100%)
Fetching: thin-1.5.0.gem (100%)
Building native extensions. This could take a while...
Successfully installed eventmachine-1.0.0
Successfully installed daemons-1.1.9
Successfully installed thin-1.5.0
3 gems installed
root@pgateway:/var/www/testapp# thin start
>> Using rack adapter
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
/usr/local/rvm/gems/ruby-1.9.3-p385/gems/thin-1.5.0/lib/thin/backends /tcp_server.rb:16:in `connect': cannot load such …Run Code Online (Sandbox Code Playgroud) 我在iMac上运行了Rails Thin服务器.通常,我ctl-c来阻止它.但是,我的终端窗口关闭了,现在我正试图阻止瘦.
我试过这个:
$ thin stop
Run Code Online (Sandbox Code Playgroud)
得到了这个:
no PID found in tmp/pids/thin.pid
Run Code Online (Sandbox Code Playgroud)
但是,PID是tmp/pids/server.pid
我试过这个:
$ thin stop -C tmp/pids/server.pid
Run Code Online (Sandbox Code Playgroud)
但是,我得到了这个:
undefined method `each' for 8395:Fixnum (NoMethodError)
Run Code Online (Sandbox Code Playgroud)
谢谢您的帮助!
作为一种学习体验,我正在尝试为Android和iOS构建一个聊天应用程序,允许群聊(如Whatsapp)和Rails中的聊天服务器.经过一番研究后,我决定和Faye一起去,因为它似乎很容易实现.我正在按照这些教程来做到这一点:
对于我的工作栈,我想建立的Nginx有Thin或Puma,但我不明白这将是更好,这将是"正确"的方式建立生产聊天服务器.
我知道这个问题可能有点主观,但谷歌搜索/研究过去一周这让我更加矛盾,因为大多数例子都在使用,Thin但大多数文章都喜欢Puma.
如果您能提供您的答案的参考和示例,我将不胜感激.谢谢.
我有一个ruby脚本,我使用GET方法记录系统状态,在日志中返回的输出是这样的:
1.2.3.111 - - [00/Jan/2016:08:21:24 +0000] "GET /service/sys/status HTTP/1.1" 200 15 0.0006
Run Code Online (Sandbox Code Playgroud)
我想以JSON格式记录这些.有没有办法可以做到这一点,虽然我知道这可以通过瘦网络服务器以某种方式完成,但我不知道如何做到这一点.