- 浏览: 126364 次
- 性别:
- 来自: 广州
-
文章分类
最新评论
-
sitoto:
git revert 和reset的区别这里讲一下git re ...
git的revert和reset和 git push -
sitoto:
If x is your column or vector:s ...
string.strip--去除字符串空格 -
xueluowuhen_1:
正好用到了 谢谢!
ruby的数据类型转换-字符串转整型 -
ChuanSu:
jkjjlkjkljkljlkjlkj
关于建站 -
ChuanSu:
[/main void {zhedoushi shenm yi ...
关于建站
Reported by pierre.b...@gmail.com, Sep 8, 2009
What steps will reproduce the problem?
1. Nginx 6.71
2. Passenger 2.2.4
3. Random page show a 502 Gateway errors with this message
[ pid=2398 file=ext/nginx/HelperServer.cpp:478 time=2009-09-08 14:49:41.259 ]:
Couldn't forward the HTTP response back to the HTTP client: It seems the
user clicked on the 'Stop' button in his browser.
[ pid=2398 file=ext/nginx/HelperServer.cpp:478 time=2009-09-08 14:49:44.214 ]:
Couldn't forward the HTTP response back to the HTTP client: It seems the
user clicked on the 'Stop' button in his browser.
*** Exception Errno::EPIPE in Passenger RequestHandler (Broken pipe)
(process 16217):
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/rack/request_handler.rb:108:in
`write'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/rack/request_handler.rb:108:in
`process_request'
from
/opt/ree/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/response.rb:155:in
`each_line'
from
/opt/ree/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/response.rb:155:in
`each'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/rack/request_handler.rb:107:in
`process_request'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_request_handler.rb:206:in
`main_loop'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/railz/application_spawner.rb:376:in
`start_request_handler'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/railz/application_spawner.rb:334:in
`handle_spawn_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/utils.rb:182:in
`safe_fork'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/railz/application_spawner.rb:332:in
`handle_spawn_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:351:in
`__send__'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:351:in
`main_loop'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:195:in
`start_synchronously'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:162:in
`start'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/railz/application_spawner.rb:213:in
`start'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:261:in
`spawn_rails_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server_collection.rb:126:in
`lookup_or_add'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:255:in
`spawn_rails_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server_collection.rb:80:in
`synchronize'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server_collection.rb:79:in
`synchronize'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:254:in
`spawn_rails_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:153:in
`spawn_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:286:in
`handle_spawn_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:351:in
`__send__'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:351:in
`main_loop'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:195:in
`start_synchronously'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/bin/passenger-spawn-server:61
What version of Phusion Passenger are you using? Which version of Rails? On
what operating system?
Passenger 2.2.4, Rails 2.3.2, version 1.8.6-20090610, Debian
Comment 1 by pierre.b...@gmail.com, Sep 9, 2009
Same problem with passenger 2.2.5
[ pid=14425 file=ext/nginx/HelperServer.cpp:478 time=2009-09-08 23:12:01.981 ]:
Couldn't forward the HTTP response back to the HTTP client: It seems the user
clicked on the 'Stop' button in his browser.
*** Exception Errno::EPIPE in Passenger RequestHandler (Broken pipe) (process 14590):
Comment 2 by VDi...@gmail.com, Sep 29, 2009
Confirmed On Ubuntu 9.04, Passenger 2.2.4, Rails 2.3.3, nginx/0.7.61
Comment 3 by ddenisse...@gmail.com, Oct 9, 2009
Same problem with passenger 2.2.5 Ubuntu 8.04, Rails 2.3.4, nginx/0.7.62
Comment 4 by angi...@gmail.com, Oct 12, 2009
Same problem with passenger-2.2.5, Ruby Enterprise Edition 20090610, Ubuntu 9.04,
Rails 2.3.4, nginx/0.7.62. I'm using smart spawning.
System was running fine for 3 days. This morning every request started throwing a
502. This is my first time w/ a passenger deployment.
Comment 5 by jseib...@gmail.com, Oct 13, 2009
Same issue here. Passenger 2.2.4, Rails 2.3.3. Ubuntu 9.0.4. Apache 2.
This is taking our site down about once a day.
Comment 6 by angi...@gmail.com, Oct 14, 2009
Possible resolution:
Turns out monit was killing my nginx worker threads due to memory consumption. Since
it was workers and not the master process, we didnt get any monit notifications about
a PID change.
Silly wabbits.
Comment 7 by VDi...@gmail.com, Oct 19, 2009
Apparently the 502 on our site were linux open file descriptor limits. We raised them and so far no more 502.
Comment 9 by ehud...@gmail.com, Oct 29, 2009
confirmed on nginx 0.7.59, passenger 2.2.4.
This is killing us about twice a day. what is actually causing this and are
there any workarounds?
Comment 10 by born...@gmail.com, Dec 13, 2009
I have similar issue in Apache. In my case, this was caused by crawler trying to grab
pdf files which were served by xsendfile by Rails. However normal user access won't
generate this kind of error in error_log.
This is on Apache 2.2.14, Passenger 2.2.7 and Rails 2.3.5.
Comment 11 by andersle...@gmail.com, Jan 22, 2010
Confirmed on
FreeBSD 7.2-RELEASE-p4 #26
Apache/2.2.13
Passenger 2.2.4
Rails 2.2.2
It totally kills all apps running on Passenger, and has happened 4 times on two days.
Comment 12 by project member hongli...@gmail.com, Jan 22, 2010
Can anybody else confirm that raising the OS file descriptor limit helps?
Comment 13 by steve.qu...@gmail.com, Jan 26, 2010
Defect Confirmed on Ubuntu 8.10
Nginx 0.7.64
Passenger 2.2.9
Rails 2.3.5
Ruby 1.9.1p243
This is also killing one of our servers about twice a day - mostly during peak times. This didn't happen when
we ran on ruby 1.8.6 + an older version of passenger (maybe around 2.2.6 or so). We recently upgraded to 1.9
and passenger along with it. Before the upgrade everything ran perfectly.
Does anyone have any news on this problem? It's been around since Sept. Unfortunately starting to look at
alternatives to Passenger because of this
Comment 14 by project member hongli...@gmail.com, Jan 26, 2010
steve.quinlan, have you tried increasing Apache's maximum file descriptor limit?
Comment 15 by steve.qu...@gmail.com, Jan 27, 2010
I'm on nginx. Is there a similar setting?
Comment 16 by project member hongli...@gmail.com, Jan 27, 2010
Yes. Please try increasing the max file descriptor limit.
Comment 17 by steve.qu...@gmail.com, Jan 27, 2010
I've increased the worker_rlimit_nofile setting in nginx.conf to 40000. Let me know if I should pick a better
number.
Not sure how relevant this is, but I have only one application running on this server, and notice that I
frequently get multiple ApplicationSpawners (my understanding is that you get one ApplicationSpawner per
code base).
Today when I made the file descriptor limit change and ran /etc/init.d/nginx reload, I got multiple
PassengerNginxHelperServer also. I had to kill all the processes manually. This may or may not be relevant to
this defect. I saved the passenger-status output if you wish me to post it here or in another report.
In the meantime, I'll post any updates on the progress with the max file descriptor limit.
And thanks for your help!
Comment 18 by steve.qu...@gmail.com, Jan 27, 2010
@honglilai My app just died in the same fashion described above, 80 minutes after making the file descriptor
limit change. So I don't think it made any difference. Here's the passenger memory stats. (Machine is 512 mb
slice, ubuntu)
------- Apache processes --------
### Processes: 0
### Total private dirty RSS: 0.00 MB
---------- Nginx processes ----------
PID PPID VMSize Private Name
-------------------------------------
10038 1 34.6 MB 0.2 MB nginx: master process /opt/nginx/sbin/nginx
10039 10038 35.7 MB 1.2 MB nginx: worker process
10043 10038 35.7 MB 1.3 MB nginx: worker process
### Processes: 3
### Total private dirty RSS: 2.68 MB
----- Passenger processes ------
PID VMSize Private Name
--------------------------------
10020 24.1 MB 1.4 MB PassengerNginxHelperServer /opt/ruby-
1.9.1/lib/ruby/gems/1.9.1/gems/passenger-2.2.9 /opt/ruby-1.9.1/bin/ruby 3 4 0 6 0 300 1 www-data 33
33 /tmp/passenger.10017
10035 46.6 MB 9.5 MB Passenger spawn server
10094 250.4 MB 103.4 MB Rails: /home/apps/public_html/myapp/current
10369 220.4 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
10414 222.7 MB 45.9 MB Rails: /home/apps/public_html/myapp/current
10422 222.7 MB 45.9 MB Rails: /home/apps/public_html/myapp/current
10430 222.6 MB 44.3 MB Rails: /home/apps/public_html/myapp/current
10438 220.4 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
### Processes: 8
### Total private dirty RSS: 250.79 MB
Comment 19 by project member hongli...@gmail.com, Jan 27, 2010
You mentioned that it is "killing your server". Does that mean that once the EPIPE
error occurs, it'll keep occurring for everybody until some manual action is taken?
Could you also check whether the Nginx PIDs change after the EPIPE error occurs? For
example I see that your Nginx PIDs are 10038, 10039 and 10043; do any of those three
change?
Comment 20 by steve.qu...@gmail.com, Jan 27, 2010
@honglilai - It would be more accurate to say it is killing my app that my server, although there is only 1 app
running on the server. Once the defect kicks in, all http requests to the app time out. But I'm still able to ssh
to the box and kill processes without lag etc.
I'm not sure if the pids change, so I've taken a note of the nginx pids now, and will report back with the new
nginx pids if/when the problem happens again.
In the meantime, I also made one other change to my nginx.conf, I removed the line that says:
rails_framework_spawner_idle_time: 0
It's the only unusual thing about my nginx.conf - I use default settings for pretty much everything. I'll see if
that has an effect and report back.
Comment 21 by hello%va...@gtempaccount.com, Jan 28, 2010
@honglilai: Nearly 24 hours later, the server feels a lot better since I removed
"rails_framework_spawner_idle_time: 0". There's been no hanging since, and there's a
lot less processes running. The log files show a few of the EPIPE errors happening,
but there's been no visible effect on the server.
Here's the stats:
---------- Nginx processes ----------
PID PPID VMSize Private Name
-------------------------------------
10786 1 37.9 MB ? nginx: master process /opt/nginx/sbin/nginx
12013 10786 37.9 MB 1.3 MB nginx: worker process
12015 10786 37.9 MB 1.1 MB nginx: worker process
### Processes: 3
### Total private dirty RSS: 2.40 MB (?)
----- Passenger processes -----
PID VMSize Private Name
-------------------------------
11995 88.1 MB 1.3 MB PassengerNginxHelperServer
/opt/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/passenger-2.2.9 /opt/ruby-1.9.1/bin/ruby 3 4
0 6 0 300 1 www-data 33 33 /tmp/passenger.10786
12010 46.6 MB 1.9 MB Passenger spawn server
15430 244.8 MB 97.8 MB Rails: /home/apps/public_html/myapp/current
### Processes: 3
### Total private dirty RSS: 101.04 MB
This looks a lot healthier than yesterdays output (see above). Is it possible to
confirm if the "rails_framework_spawner_idle_time: 0" setting could be problematic,
or is this just a big coincidence?
Thanks for your help again.
Comment 22 by steve.qu...@gmail.com, Jan 28, 2010
Ooops. The above comment should be posted from steve.quinlan (I posted it on a
different computer than normal)
Steve
Comment 23 by project member hongli...@gmail.com, Jan 28, 2010
It would be very odd if that option is the cause of the problems. Please keep
monitoring the server and report back if there are any problems.
Comment 24 by pierre.b...@gmail.com, Jan 28, 2010
I don't use this option (rails_framework_spawner_idle_time), and i have the problem.
Comment 25 by steve.qu...@gmail.com, Jan 28, 2010
The only other change I made yesterday was the file descriptor limits setting, but that had no observable
improvement as the app hung about an hour later. I'll keep monitoring.
Comment 26 by steve.qu...@gmail.com, Jan 29, 2010
Hi all,
after over 40 successful hours (the longest in a while), the defect occurred again. Here are the stats at the
time of the defect.
---------- Nginx processes ----------
PID PPID VMSize Private Name
-------------------------------------
10786 1 37.9 MB ? nginx: master process /opt/nginx/sbin/nginx
12013 10786 37.9 MB 1.3 MB nginx: worker process
12015 10786 37.9 MB 1.2 MB nginx: worker process
### Processes: 3
### Total private dirty RSS: 2.54 MB (?)
----- Passenger processes ------
PID VMSize Private Name
--------------------------------
11995 88.1 MB 1.4 MB PassengerNginxHelperServer /opt/ruby-
1.9.1/lib/ruby/gems/1.9.1/gems/passenger-2.2.9 /opt/ruby-1.9.1/bin/ruby 3 4 0 6 0 300 1 www-data 33
33 /tmp/passenger.10786
12010 47.1 MB 3.9 MB Passenger spawn server
19978 247.9 MB 100.5 MB Rails: /home/apps/public_html/myapp/current
21326 221.6 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
21356 223.6 MB 44.6 MB Rails: /home/apps/public_html/myapp/current
21364 223.6 MB 44.8 MB Rails: /home/apps/public_html/myapp/current
21372 223.6 MB 44.7 MB Rails: /home/apps/public_html/myapp/current
21380 221.6 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
Note the nginx workers did not change pids (you can compare with the stats from yesterday)
Anytime the problem occurs, there's multiple ApplicationSpawner entries in the stats. When I ran
/etc/init.d/nginx stop, my stats looked like this:
-------- Nginx processes --------
### Processes: 0
### Total private dirty RSS: 0.00 MB
----- Passenger processes -----
PID VMSize Private Name
-------------------------------
12010 47.1 MB 3.9 MB Passenger spawn server
21326 221.6 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
21380 221.6 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
### Processes: 3
### Total private dirty RSS: 4.23 MB
Note the application spawners are not dying off. So I'm back to square one on this issue.
Until we get this fixed can anyone suggest a workaround? Maybe a cron job to kill off excess spawners etc.
Comment 27 by project member hongli...@gmail.com, Jan 29, 2010
You can use a cron job to kill off the spawn server once in a while. That should
automatically kill off the ApplicationSpawners too.
Comment 28 by vitalaa...@gmail.com, Jan 29, 2010
Problem confirmed here as well w/ Ubuntu 8.04, Passenger 2.2.5, Rails 2.1.2,
nginx/0.7.61.
I'll be applying the cron job fix tonight and will report back if the problem recurs.
This has brought our high-traffic site down many times, so hopefully the priority can
be bumped up a notch.
Thanks honglilai for your Passenger work - very much appreciated.
Comment 29 by project member hongli...@gmail.com, Jan 30, 2010
vitalaaron, are your symptoms the same? When the problem occurs are there multiple
ApplicationSpawners for the same app?
Comment 30 by steve.qu...@gmail.com, Feb 2, 2010
My app has survived since Friday without a crash since I implemented the cron job to kill the spawn server.
However, I'm still hesistant to say that the problem is fixed.
I thought I'd post my cron info if anyone wants it
# add this to root's cron job list
0 * * * * /opt/nginx/kill_spawn_server.sh
#kill_spawn_server.sh
#!/bin/sh
kill -9 `ps -ef | grep 'spawn server' | grep -v grep | awk '{print $2}'`
Look forward to finding out more about the root cause of this defect,
Steve
Comment 31 by project member hongli...@gmail.com, Feb 2, 2010
I haven't been able to find the cause until now, but Phusion Passenger 3 will come
with a bunch of cleanup changes for the spawn server. Maybe those changes would make
your kill cron job obsolete.
Comment 32 by steve.qu...@gmail.com, Feb 2, 2010
Thanks for the help @honglilai, I look forward to Passenger 3
Comment 33 by project member hongli...@gmail.com, Feb 7, 2010
I suspect that this problem might have something to do with a long-standing Safari
bug: https://bugs.webkit.org/show_bug.cgi?id=5760
Could you disable keep-alive, temporarily disable the cron job, and check whether the
problem still occurs?
Comment 34 by steve.qu...@gmail.com, Feb 8, 2010
@honglilai - I've disabled keep-alive (nginx users should set keepalive_timeout 0;) and turned off the cron job.
I'll monitor the situation and report back. By the way, the cron job has been a very successful, but not quite
perfect, workaround.
Comment 35 by steve.qu...@gmail.com, Feb 9, 2010
Since i disabled the keep alive + cron job, I haven't had any problems *yet*. However, looking at the nginx log
file, I see that the Errno::EPIPE exception is still being thrown. Can I presume that the problem isn't fixed then,
or does it still have a chance of being ok?
---
[ pid=1588 file=ext/nginx/HelperServer.cpp:478 time=2010-02-08 20:00:40.315 ]:
Couldn't forward the HTTP response back to the HTTP client: It seems the user clicked on the 'Stop' button in
his browser.
*** Exception Errno::EPIPE in Passenger RequestHandler (Broken pipe) (process 3140):
---
Comment 36 by project member hongli...@gmail.com, Feb 9, 2010
Before EPIPE errors were correlated with downtime, but now they don't, right? If so
then the EPIPE errors that you're getting now might be legit, i.e. people actually
clicked on Stop.
If you set the error log level to 'debug' then you can see whether it's legit or not,
like this:
error_log logs/error.log debug;
You should see something along the lines of this:
2010/02/02 12:09:27 [info] 56470#0: *23 kevent() reported that client closed
prematurely connection, so upstream connection is closed too while sending request to
upstream, client: 127.0.0.1, server: towertop.test, request: "GET
/web_apps/L1VzZXJzL2hvbmdsaS9Qcm9qZWN0cy90b3dlcnRvcA/logs/tail HTTP/1.1", upstream:
"passenger:unix:/passenger_helper_server:", host: "towertop.test:8000", referrer:
"http://towertop.test:8000/web_apps/L1VzZXJzL2hvbmdsaS9Qcm9qZWN0cy90b3dlcnRvcA/logs"
Notice the "reported that client closed prematurely connection, so upstream
connection is closed too while sending request to upstream" part, this indicates that
Nginx has detect that the HTTP client closed the connection.
Comment 37 by project member hongli...@gmail.com, Feb 11, 2010
Merging this issue with #435.
Status: Duplicate
Mergedinto: 435
Comment 38 by vitalaa...@gmail.com, Feb 18, 2010
@honglilai
I just posted a reply to your above question in issue #435 since this issue was
merged with it. Sorry for delay - I really thought I had voted for the issue but
apparently I hadn't, as I wasn't getting notifications.
What steps will reproduce the problem?
1. Nginx 6.71
2. Passenger 2.2.4
3. Random page show a 502 Gateway errors with this message
[ pid=2398 file=ext/nginx/HelperServer.cpp:478 time=2009-09-08 14:49:41.259 ]:
Couldn't forward the HTTP response back to the HTTP client: It seems the
user clicked on the 'Stop' button in his browser.
[ pid=2398 file=ext/nginx/HelperServer.cpp:478 time=2009-09-08 14:49:44.214 ]:
Couldn't forward the HTTP response back to the HTTP client: It seems the
user clicked on the 'Stop' button in his browser.
*** Exception Errno::EPIPE in Passenger RequestHandler (Broken pipe)
(process 16217):
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/rack/request_handler.rb:108:in
`write'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/rack/request_handler.rb:108:in
`process_request'
from
/opt/ree/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/response.rb:155:in
`each_line'
from
/opt/ree/lib/ruby/gems/1.8/gems/actionpack-2.3.2/lib/action_controller/response.rb:155:in
`each'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/rack/request_handler.rb:107:in
`process_request'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_request_handler.rb:206:in
`main_loop'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/railz/application_spawner.rb:376:in
`start_request_handler'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/railz/application_spawner.rb:334:in
`handle_spawn_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/utils.rb:182:in
`safe_fork'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/railz/application_spawner.rb:332:in
`handle_spawn_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:351:in
`__send__'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:351:in
`main_loop'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:195:in
`start_synchronously'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:162:in
`start'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/railz/application_spawner.rb:213:in
`start'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:261:in
`spawn_rails_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server_collection.rb:126:in
`lookup_or_add'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:255:in
`spawn_rails_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server_collection.rb:80:in
`synchronize'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server_collection.rb:79:in
`synchronize'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:254:in
`spawn_rails_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:153:in
`spawn_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/spawn_manager.rb:286:in
`handle_spawn_application'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:351:in
`__send__'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:351:in
`main_loop'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/lib/phusion_passenger/abstract_server.rb:195:in
`start_synchronously'
from
/opt/ree/lib/ruby/gems/1.8/gems/passenger-2.2.4/bin/passenger-spawn-server:61
What version of Phusion Passenger are you using? Which version of Rails? On
what operating system?
Passenger 2.2.4, Rails 2.3.2, version 1.8.6-20090610, Debian
Comment 1 by pierre.b...@gmail.com, Sep 9, 2009
Same problem with passenger 2.2.5
[ pid=14425 file=ext/nginx/HelperServer.cpp:478 time=2009-09-08 23:12:01.981 ]:
Couldn't forward the HTTP response back to the HTTP client: It seems the user
clicked on the 'Stop' button in his browser.
*** Exception Errno::EPIPE in Passenger RequestHandler (Broken pipe) (process 14590):
Comment 2 by VDi...@gmail.com, Sep 29, 2009
Confirmed On Ubuntu 9.04, Passenger 2.2.4, Rails 2.3.3, nginx/0.7.61
Comment 3 by ddenisse...@gmail.com, Oct 9, 2009
Same problem with passenger 2.2.5 Ubuntu 8.04, Rails 2.3.4, nginx/0.7.62
Comment 4 by angi...@gmail.com, Oct 12, 2009
Same problem with passenger-2.2.5, Ruby Enterprise Edition 20090610, Ubuntu 9.04,
Rails 2.3.4, nginx/0.7.62. I'm using smart spawning.
System was running fine for 3 days. This morning every request started throwing a
502. This is my first time w/ a passenger deployment.
Comment 5 by jseib...@gmail.com, Oct 13, 2009
Same issue here. Passenger 2.2.4, Rails 2.3.3. Ubuntu 9.0.4. Apache 2.
This is taking our site down about once a day.
Comment 6 by angi...@gmail.com, Oct 14, 2009
Possible resolution:
Turns out monit was killing my nginx worker threads due to memory consumption. Since
it was workers and not the master process, we didnt get any monit notifications about
a PID change.
Silly wabbits.
Comment 7 by VDi...@gmail.com, Oct 19, 2009
Apparently the 502 on our site were linux open file descriptor limits. We raised them and so far no more 502.
Comment 9 by ehud...@gmail.com, Oct 29, 2009
confirmed on nginx 0.7.59, passenger 2.2.4.
This is killing us about twice a day. what is actually causing this and are
there any workarounds?
Comment 10 by born...@gmail.com, Dec 13, 2009
I have similar issue in Apache. In my case, this was caused by crawler trying to grab
pdf files which were served by xsendfile by Rails. However normal user access won't
generate this kind of error in error_log.
This is on Apache 2.2.14, Passenger 2.2.7 and Rails 2.3.5.
Comment 11 by andersle...@gmail.com, Jan 22, 2010
Confirmed on
FreeBSD 7.2-RELEASE-p4 #26
Apache/2.2.13
Passenger 2.2.4
Rails 2.2.2
It totally kills all apps running on Passenger, and has happened 4 times on two days.
Comment 12 by project member hongli...@gmail.com, Jan 22, 2010
Can anybody else confirm that raising the OS file descriptor limit helps?
Comment 13 by steve.qu...@gmail.com, Jan 26, 2010
Defect Confirmed on Ubuntu 8.10
Nginx 0.7.64
Passenger 2.2.9
Rails 2.3.5
Ruby 1.9.1p243
This is also killing one of our servers about twice a day - mostly during peak times. This didn't happen when
we ran on ruby 1.8.6 + an older version of passenger (maybe around 2.2.6 or so). We recently upgraded to 1.9
and passenger along with it. Before the upgrade everything ran perfectly.
Does anyone have any news on this problem? It's been around since Sept. Unfortunately starting to look at
alternatives to Passenger because of this

Comment 14 by project member hongli...@gmail.com, Jan 26, 2010
steve.quinlan, have you tried increasing Apache's maximum file descriptor limit?
Comment 15 by steve.qu...@gmail.com, Jan 27, 2010
I'm on nginx. Is there a similar setting?
Comment 16 by project member hongli...@gmail.com, Jan 27, 2010
Yes. Please try increasing the max file descriptor limit.
Comment 17 by steve.qu...@gmail.com, Jan 27, 2010
I've increased the worker_rlimit_nofile setting in nginx.conf to 40000. Let me know if I should pick a better
number.
Not sure how relevant this is, but I have only one application running on this server, and notice that I
frequently get multiple ApplicationSpawners (my understanding is that you get one ApplicationSpawner per
code base).
Today when I made the file descriptor limit change and ran /etc/init.d/nginx reload, I got multiple
PassengerNginxHelperServer also. I had to kill all the processes manually. This may or may not be relevant to
this defect. I saved the passenger-status output if you wish me to post it here or in another report.
In the meantime, I'll post any updates on the progress with the max file descriptor limit.
And thanks for your help!
Comment 18 by steve.qu...@gmail.com, Jan 27, 2010
@honglilai My app just died in the same fashion described above, 80 minutes after making the file descriptor
limit change. So I don't think it made any difference. Here's the passenger memory stats. (Machine is 512 mb
slice, ubuntu)
------- Apache processes --------
### Processes: 0
### Total private dirty RSS: 0.00 MB
---------- Nginx processes ----------
PID PPID VMSize Private Name
-------------------------------------
10038 1 34.6 MB 0.2 MB nginx: master process /opt/nginx/sbin/nginx
10039 10038 35.7 MB 1.2 MB nginx: worker process
10043 10038 35.7 MB 1.3 MB nginx: worker process
### Processes: 3
### Total private dirty RSS: 2.68 MB
----- Passenger processes ------
PID VMSize Private Name
--------------------------------
10020 24.1 MB 1.4 MB PassengerNginxHelperServer /opt/ruby-
1.9.1/lib/ruby/gems/1.9.1/gems/passenger-2.2.9 /opt/ruby-1.9.1/bin/ruby 3 4 0 6 0 300 1 www-data 33
33 /tmp/passenger.10017
10035 46.6 MB 9.5 MB Passenger spawn server
10094 250.4 MB 103.4 MB Rails: /home/apps/public_html/myapp/current
10369 220.4 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
10414 222.7 MB 45.9 MB Rails: /home/apps/public_html/myapp/current
10422 222.7 MB 45.9 MB Rails: /home/apps/public_html/myapp/current
10430 222.6 MB 44.3 MB Rails: /home/apps/public_html/myapp/current
10438 220.4 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
### Processes: 8
### Total private dirty RSS: 250.79 MB
Comment 19 by project member hongli...@gmail.com, Jan 27, 2010
You mentioned that it is "killing your server". Does that mean that once the EPIPE
error occurs, it'll keep occurring for everybody until some manual action is taken?
Could you also check whether the Nginx PIDs change after the EPIPE error occurs? For
example I see that your Nginx PIDs are 10038, 10039 and 10043; do any of those three
change?
Comment 20 by steve.qu...@gmail.com, Jan 27, 2010
@honglilai - It would be more accurate to say it is killing my app that my server, although there is only 1 app
running on the server. Once the defect kicks in, all http requests to the app time out. But I'm still able to ssh
to the box and kill processes without lag etc.
I'm not sure if the pids change, so I've taken a note of the nginx pids now, and will report back with the new
nginx pids if/when the problem happens again.
In the meantime, I also made one other change to my nginx.conf, I removed the line that says:
rails_framework_spawner_idle_time: 0
It's the only unusual thing about my nginx.conf - I use default settings for pretty much everything. I'll see if
that has an effect and report back.
Comment 21 by hello%va...@gtempaccount.com, Jan 28, 2010
@honglilai: Nearly 24 hours later, the server feels a lot better since I removed
"rails_framework_spawner_idle_time: 0". There's been no hanging since, and there's a
lot less processes running. The log files show a few of the EPIPE errors happening,
but there's been no visible effect on the server.
Here's the stats:
---------- Nginx processes ----------
PID PPID VMSize Private Name
-------------------------------------
10786 1 37.9 MB ? nginx: master process /opt/nginx/sbin/nginx
12013 10786 37.9 MB 1.3 MB nginx: worker process
12015 10786 37.9 MB 1.1 MB nginx: worker process
### Processes: 3
### Total private dirty RSS: 2.40 MB (?)
----- Passenger processes -----
PID VMSize Private Name
-------------------------------
11995 88.1 MB 1.3 MB PassengerNginxHelperServer
/opt/ruby-1.9.1/lib/ruby/gems/1.9.1/gems/passenger-2.2.9 /opt/ruby-1.9.1/bin/ruby 3 4
0 6 0 300 1 www-data 33 33 /tmp/passenger.10786
12010 46.6 MB 1.9 MB Passenger spawn server
15430 244.8 MB 97.8 MB Rails: /home/apps/public_html/myapp/current
### Processes: 3
### Total private dirty RSS: 101.04 MB
This looks a lot healthier than yesterdays output (see above). Is it possible to
confirm if the "rails_framework_spawner_idle_time: 0" setting could be problematic,
or is this just a big coincidence?
Thanks for your help again.
Comment 22 by steve.qu...@gmail.com, Jan 28, 2010
Ooops. The above comment should be posted from steve.quinlan (I posted it on a
different computer than normal)
Steve
Comment 23 by project member hongli...@gmail.com, Jan 28, 2010
It would be very odd if that option is the cause of the problems. Please keep
monitoring the server and report back if there are any problems.
Comment 24 by pierre.b...@gmail.com, Jan 28, 2010
I don't use this option (rails_framework_spawner_idle_time), and i have the problem.
Comment 25 by steve.qu...@gmail.com, Jan 28, 2010
The only other change I made yesterday was the file descriptor limits setting, but that had no observable
improvement as the app hung about an hour later. I'll keep monitoring.
Comment 26 by steve.qu...@gmail.com, Jan 29, 2010
Hi all,
after over 40 successful hours (the longest in a while), the defect occurred again. Here are the stats at the
time of the defect.
---------- Nginx processes ----------
PID PPID VMSize Private Name
-------------------------------------
10786 1 37.9 MB ? nginx: master process /opt/nginx/sbin/nginx
12013 10786 37.9 MB 1.3 MB nginx: worker process
12015 10786 37.9 MB 1.2 MB nginx: worker process
### Processes: 3
### Total private dirty RSS: 2.54 MB (?)
----- Passenger processes ------
PID VMSize Private Name
--------------------------------
11995 88.1 MB 1.4 MB PassengerNginxHelperServer /opt/ruby-
1.9.1/lib/ruby/gems/1.9.1/gems/passenger-2.2.9 /opt/ruby-1.9.1/bin/ruby 3 4 0 6 0 300 1 www-data 33
33 /tmp/passenger.10786
12010 47.1 MB 3.9 MB Passenger spawn server
19978 247.9 MB 100.5 MB Rails: /home/apps/public_html/myapp/current
21326 221.6 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
21356 223.6 MB 44.6 MB Rails: /home/apps/public_html/myapp/current
21364 223.6 MB 44.8 MB Rails: /home/apps/public_html/myapp/current
21372 223.6 MB 44.7 MB Rails: /home/apps/public_html/myapp/current
21380 221.6 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
Note the nginx workers did not change pids (you can compare with the stats from yesterday)
Anytime the problem occurs, there's multiple ApplicationSpawner entries in the stats. When I ran
/etc/init.d/nginx stop, my stats looked like this:
-------- Nginx processes --------
### Processes: 0
### Total private dirty RSS: 0.00 MB
----- Passenger processes -----
PID VMSize Private Name
-------------------------------
12010 47.1 MB 3.9 MB Passenger spawn server
21326 221.6 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
21380 221.6 MB 0.2 MB Passenger ApplicationSpawner: /home/apps/public_html/myapp/current
### Processes: 3
### Total private dirty RSS: 4.23 MB
Note the application spawners are not dying off. So I'm back to square one on this issue.
Until we get this fixed can anyone suggest a workaround? Maybe a cron job to kill off excess spawners etc.
Comment 27 by project member hongli...@gmail.com, Jan 29, 2010
You can use a cron job to kill off the spawn server once in a while. That should
automatically kill off the ApplicationSpawners too.
Comment 28 by vitalaa...@gmail.com, Jan 29, 2010
Problem confirmed here as well w/ Ubuntu 8.04, Passenger 2.2.5, Rails 2.1.2,
nginx/0.7.61.
I'll be applying the cron job fix tonight and will report back if the problem recurs.
This has brought our high-traffic site down many times, so hopefully the priority can
be bumped up a notch.
Thanks honglilai for your Passenger work - very much appreciated.
Comment 29 by project member hongli...@gmail.com, Jan 30, 2010
vitalaaron, are your symptoms the same? When the problem occurs are there multiple
ApplicationSpawners for the same app?
Comment 30 by steve.qu...@gmail.com, Feb 2, 2010
My app has survived since Friday without a crash since I implemented the cron job to kill the spawn server.
However, I'm still hesistant to say that the problem is fixed.
I thought I'd post my cron info if anyone wants it
# add this to root's cron job list
0 * * * * /opt/nginx/kill_spawn_server.sh
#kill_spawn_server.sh
#!/bin/sh
kill -9 `ps -ef | grep 'spawn server' | grep -v grep | awk '{print $2}'`
Look forward to finding out more about the root cause of this defect,
Steve
Comment 31 by project member hongli...@gmail.com, Feb 2, 2010
I haven't been able to find the cause until now, but Phusion Passenger 3 will come
with a bunch of cleanup changes for the spawn server. Maybe those changes would make
your kill cron job obsolete.
Comment 32 by steve.qu...@gmail.com, Feb 2, 2010
Thanks for the help @honglilai, I look forward to Passenger 3
Comment 33 by project member hongli...@gmail.com, Feb 7, 2010
I suspect that this problem might have something to do with a long-standing Safari
bug: https://bugs.webkit.org/show_bug.cgi?id=5760
Could you disable keep-alive, temporarily disable the cron job, and check whether the
problem still occurs?
Comment 34 by steve.qu...@gmail.com, Feb 8, 2010
@honglilai - I've disabled keep-alive (nginx users should set keepalive_timeout 0;) and turned off the cron job.
I'll monitor the situation and report back. By the way, the cron job has been a very successful, but not quite
perfect, workaround.
Comment 35 by steve.qu...@gmail.com, Feb 9, 2010
Since i disabled the keep alive + cron job, I haven't had any problems *yet*. However, looking at the nginx log
file, I see that the Errno::EPIPE exception is still being thrown. Can I presume that the problem isn't fixed then,
or does it still have a chance of being ok?
---
[ pid=1588 file=ext/nginx/HelperServer.cpp:478 time=2010-02-08 20:00:40.315 ]:
Couldn't forward the HTTP response back to the HTTP client: It seems the user clicked on the 'Stop' button in
his browser.
*** Exception Errno::EPIPE in Passenger RequestHandler (Broken pipe) (process 3140):
---
Comment 36 by project member hongli...@gmail.com, Feb 9, 2010
Before EPIPE errors were correlated with downtime, but now they don't, right? If so
then the EPIPE errors that you're getting now might be legit, i.e. people actually
clicked on Stop.
If you set the error log level to 'debug' then you can see whether it's legit or not,
like this:
error_log logs/error.log debug;
You should see something along the lines of this:
2010/02/02 12:09:27 [info] 56470#0: *23 kevent() reported that client closed
prematurely connection, so upstream connection is closed too while sending request to
upstream, client: 127.0.0.1, server: towertop.test, request: "GET
/web_apps/L1VzZXJzL2hvbmdsaS9Qcm9qZWN0cy90b3dlcnRvcA/logs/tail HTTP/1.1", upstream:
"passenger:unix:/passenger_helper_server:", host: "towertop.test:8000", referrer:
"http://towertop.test:8000/web_apps/L1VzZXJzL2hvbmdsaS9Qcm9qZWN0cy90b3dlcnRvcA/logs"
Notice the "reported that client closed prematurely connection, so upstream
connection is closed too while sending request to upstream" part, this indicates that
Nginx has detect that the HTTP client closed the connection.
Comment 37 by project member hongli...@gmail.com, Feb 11, 2010
Merging this issue with #435.
Status: Duplicate
Mergedinto: 435
Comment 38 by vitalaa...@gmail.com, Feb 18, 2010
@honglilai
I just posted a reply to your above question in issue #435 since this issue was
merged with it. Sorry for delay - I really thought I had voted for the issue but
apparently I hadn't, as I wasn't getting notifications.
相关推荐
基于的手势识别系统可控制灯的亮_3
untitled2.zip
S7-1500和分布式外围系统ET200MP模块数据
anaconda配置pytorch环境
高校教室管理系统,主要的模块包括查看首页、个人中心、教师管理、学生管理、教室信息管理、教师申请管理、学生申请管理、课时表管理、教师取消预约管理、学生取消预约管理等功能。
半挂汽车列车横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析在典型工况下的表现,半挂汽车列车在典型工况下的横向稳定性控制研究:基于模糊PID与制动力矩分配的联合仿真分析,半挂汽车列车4自由度6轴整车model,横向稳定性控制,在低附着系数路面,进行典型3个工况,角阶跃,双移线,方向盘转角。 采用算法:模糊PID,制动力矩分配,最优滑移率滑膜控制。 以上基于trucksim和simulink联合仿真,有对应 p-a-p-e-r参考 ,关键词: 1. 半挂汽车列车 2. 4自由度6轴整车model 3. 横向稳定性控制 4. 低附着系数路面 5. 典型工况(角阶跃、双移线、方向盘转角) 6. 模糊PID算法 7. 制动力矩分配 8. 最优滑移率滑膜控制 9. Trucksim和Simulink联合仿真 10. P-A-P-E-R参考; 用分号隔开上述关键词为:半挂汽车列车; 4自由度6轴整车model; 横向稳定性控制; 低附着系数路面; 典型工况; 模糊PID算法; 制动力矩分配; 最优滑移率滑膜控制; Trucksim和Simulink联合仿真; P-A-P-E-R参考
路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法及其改进算法Matlab代码实现,路径规划人工势场法以及改进人工势场法matlab代码,包含了 ,路径规划; 人工势场法; 改进人工势场法; MATLAB代码; 分隔词“;”。,基于Matlab的改进人工势场法路径规划算法研究
本文介绍了范德堡大学深脑刺激器(DBS)项目,该项目旨在开发和临床评估一个系统,以辅助从规划到编程的整个过程。DBS是一种高频刺激治疗,用于治疗运动障碍,如帕金森病。由于目标区域在现有成像技术中可见性差,因此DBS电极的植入和编程过程复杂且耗时。项目涉及使用计算机辅助手术技术,以及一个定制的微定位平台(StarFix),该平台允许在术前进行图像采集和目标规划,提高了手术的精确性和效率。此外,文章还讨论了系统架构和各个模块的功能,以及如何通过中央数据库和网络接口实现信息共享。
三菱FX3U步进电机FB块的应用:模块化程序实现电机换算,提高稳定性和移植性,三菱FX3U步进电机换算FB块:模块化编程实现电机控制的高效性与稳定性提升,三菱FX3U 步进电机算FB块 FB块的使用可以使程序模块化简单化,进而提高了程序的稳定性和可移植性。 此例中使用FB块,可以实现步进电机的算,已知距离求得脉冲数,已知速度可以求得频率。 程序中包含有FB和ST内容;移植方便,在其他程序中可以直接添加已写好的FB块。 ,三菱FX3U;步进电机换算;FB块;程序模块化;稳定性;可移植性;距离与脉冲数换算;速度与频率换算;FB和ST内容;移植方便。,三菱FX3U步进电机换算FB块:程序模块化与高稳定性实现
光伏逆变器TMS320F28335设计方案:Boost升压与单相全桥逆变,PWM与SPWM控制,MPPT恒压跟踪法实现,基于TMS320F28335DSP的光伏逆变器设计方案:Boost升压与单相全桥逆变电路实现及MPPT技术解析,光伏逆变器设计方案TMS320F28335-176资料 PCB 原理图 源代码 1. 本设计DC-DC采用Boost升压,DCAC采用单相全桥逆变电路结构。 2. 以TI公司的浮点数字信号控制器TMS320F28335DSP为控制电路核心,采用规则采样法和DSP片内ePWM模块功能实现PWM和SPWM波。 3. PV最大功率点跟踪(MPPT)采用了恒压跟踪法(CVT法)来实现,并用软件锁相环进行系统的同频、同相控制,控制灵活简单。 4.资料包含: 原理图,PCB(Protel或者AD打开),源程序代码(CCS打开),BOM清单,参考资料 ,核心关键词:TMS320F28335-176; 光伏逆变器; 升压; 逆变电路; 数字信号控制器; 规则采样法; ePWM模块; PWM; SPWM波; MPPT; 恒压跟踪法; 原理图; PCB; 源程序代码; BOM
centos9内核安装包
昆仑通态触摸屏与两台台达VFD-M变频器通讯实现:频率设定、启停控制与状态指示功能接线及设置说明,昆仑通态TPC7062KD触摸屏与两台台达VFD-M变频器通讯程序:实现频率设定、启停控制与状态指示,昆仑通态MCGS与2台台达VFD-M变频器通讯程序实现昆仑通态触摸屏与2台台达VFD-M变频器通讯,程序稳定可靠 器件:昆仑通态TPC7062KD触摸屏,2台台达VFD-M变频器,附送接线说明和设置说明 功能:实现频率设定,启停控制,实际频率读取等,状态指示 ,昆仑通态MCGS; 台达VFD-M变频器; 通讯程序; 稳定可靠; 频率设定; 启停控制; 实际频率读取; 状态指示; 接线说明; 设置说明,昆仑通态MCGS与台达VFD-M变频器通讯程序:稳定可靠,双机控制全实现
研控步进电机驱动器方案验证通过,核心技术成熟可生产,咨询优惠价格!硬件原理图与PCB源代码全包括。,研控步进电机驱动器方案验证通过,核心技术掌握,生产准备,咨询实际价格,包含硬件原理图及PCB源代码。,研控步进电机驱动器方案 验证可用,可以生产,欢迎咨询实际价格,快速掌握核心技术。 包括硬件原理图 PCB源代码 ,研控步进电机驱动器方案; 验证可用; 可生产; 核心技术; 硬件原理图; PCB源代码,研控步进电机驱动器方案验证通过,现可生产供应,快速掌握核心技术,附硬件原理图及PCB源代码。
高质量的OPCClient_UA源码分享:基于C#的OPC客户端开发源码集(测试稳定、多行业应用实例、VS编辑器支持),高质量OPC客户端源码解析:OPCClient_UA C#开发,适用于VS2019及多行业现场应用源码分享,OPCClient_UA源码OPC客户端源码(c#开发) 另外有opcserver,opcclient的da,ua版本的见其他链接。 本项目为VS2019开发,可用VS其他版本的编辑器打开项目。 已应用到多个行业的几百个应用现场,长时间运行稳定,可靠。 本项目中提供测试OPCClient的软件开发源码,有详细的注释,二次开发清晰明了。 ,OPCClient_UA; OPC客户端源码; C#开发; VS2019项目; 稳定可靠; 详细注释; 二次开发,OPC客户端源码:稳定可靠的C#开发实现,含详细注释支持二次开发
毕业设计
三菱FX3U六轴标准程序:六轴控制特色及转盘多工位流水作业功能实现,三菱FX3U六轴标准程序:实现3轴本体控制与3个1PG定位模块,轴点动控制、回零控制及定位功能,结合气缸与DD马达控制转盘的多工位流水作业模式,三菱FX3U六轴标准程序,程序包含本体3轴控制,扩展3个1PG定位模块,一共六轴。 程序有轴点动控制,回零控制,相对定位,绝对定位。 另有气缸数个,一个大是DD马达控制的转盘,整个是转盘多工位流水作业方式 ,三菱FX3U;六轴控制;轴点动控制;回零控制;定位模块;DD马达转盘;流水作业方式,三菱FX3U六轴程序控制:转盘流水作业的机械多轴系统
在 GEE(Google Earth Engine)中,XEE 包是一个用于处理和分析地理空间数据的工具。以下是对 GEE 中 XEE 包的具体介绍: 主要特性 地理数据处理:提供强大的函数和工具,用于处理遥感影像和其他地理空间数据。 高效计算:利用云计算能力,支持大规模数据集的快速处理。 可视化:内置可视化工具,方便用户查看和分析数据。 集成性:可以与其他 GEE API 和工具无缝集成,支持多种数据源。 适用场景 环境监测:用于监测森林砍伐、城市扩展、水体变化等环境问题。 农业分析:分析作物生长、土地利用变化等农业相关数据。 气候研究:研究气候变化对生态系统和人类活动的影响。
基于博途V16的邮件分拣机控制系统设计与实现:西门子S7-1200PLC与TP700触摸屏程序化及其仿真视频与CAD接线控制要求详解。,邮件分拣机自动化系统设计与实现:基于西门子S7-1200PLC与TP700触摸屏的博途V16程序,包含仿真视频、CAD接线及控制要求详解。,邮件分拣机控制系统西门子S7-1200PLC和TP700触摸屏程序博途V16,带仿真视频CAD接线和控制要求 ,邮件分拣; 控制系统; 西门子S7-1200PLC; TP700触摸屏程序; 博途V16; 仿真视频; CAD接线; 控制要求,邮件分拣机控制系统:S7-1200PLC与TP700触摸屏程序博途V16集成仿真视频CAD控制要求
新增自定义链接的海报模板设置 智能会议 2.2.8+好男人基础模块2.01 开源版 智能会议系统包括会议介绍、会议日程、在线报名(支持付费和免费)、会场导航、会议指南、联系我们等功能;