我有一个/opt/rtd/gunicorn/run.sock套接字文件: /opt/rtd/gunicorn/run.sock 。 我需要nginx能够打开此套接字并写入它。 当我运行sesearch –allow -s httpd_t | grep unix_stream_socket sesearch –allow -s httpd_t | grep unix_stream_socket我注意到httpd_t被允许连接到types为httpd_t的套接字。 但是当我尝试申请时,我得到: # semanage fcontext -a -t httpd_t "/opt/rtd/gunicorn/run.sock" ValueError: Type httpd_t is invalid, must be a file or device type 我尝试过从sesearch中find的其他types,例如httpd_sys_script_t甚至是passenger_t 。 同样的结果。 我应该怎么设置types? 我宁愿不必制定额外的政策,以允许超过必要的。 必须有一种方法允许httpd_t从CentOS 7.2中的现有策略的文件套接字读取,对吧?
所以我们有一个运行在Linux中的Apache服务器,没有问题。 昨天我们重新启动了一个服务器,从那以后我们注意到apache进程打开文件的数量一直在增加,直到服务器在几个小时后没有收到填充错误日志的错误的请求: (24)Too many open files: file permissions deny server access: /var/www/html/*X* (24)Too many open files: /var/www/html/.htaccess pcfg_openfile: unable to check htaccess file, ensure it is readable 我们检查打开的文件,我们注意到它真的达到了极限(设置为4096)。 我们可以增加限制,但这只会增加正常运行时间,并不能解决问题,因为这种行为是不正常的。 没有额外的负载。 并检查打开的文件,我们注意到,exception增加的打开文件是unix套接字,即lsof -p PID充满: httpd 19848 apache 13u unix 0xffff880238a63380 0t0 204055 socket httpd 19848 apache 14u unix 0xffff8800aa3123c0 0t0 204183 socket httpd 19848 apache 15u […]
我有一个运行在App Engine中的webserver容器,它提供了一个REST API。 我试图去一个相对标准的实现 – nginx + PHP-FPM使用TCP套接字(我没有得到一个unix套接字工作出于某种原因)。 数据库连接也是通过Google Cloud VPN运行的TCP套接字。 问题 我在API上获得了〜25%的可用性。 在最大时间(App Engine的nginx代理设置为60秒)之后,通常请求将会发生504 Gateway Timeout 。 有时候,如果PHP-FPM超时( request_terminate_timeout ),将会出现502 Bad Gateway 。 我试图找出这是否是App Engine nginxconfiguration不当,我的nginx或我的PHP-FPMconfiguration。 Nginx应该closures套接字或者重用它们,但是它似乎并没有这样做。 客户端 当我siege任何给定的端点(25个用户)几分钟,我看到: HTTP/1.1 504 60.88 secs: 176 bytes ==> GET /path/to/rest …15 lines… HTTP/1.1 504 61.23 secs: 176 bytes ==> GET /path/to/rest HTTP/1.1 200 57.54 secs: 13143 […]
tl; dr:我如何让内核尽可能快速地删除TIME_WAIT /closures套接字? 我不关心数据丢失,因为我没有发送任何。 我正在一个非常孤立的机器上运行一个小testing场景。 我在同一主机上运行两个简单的C程序,应用程序的目的是将客户端套接字连接到服务器套接字并尽可能快地放下。 该应用程序速度足够快导致客户端导致“无法绑定到地址”的套接字(或者说fd)池死锁,其原因似乎是每个可用套接字插槽上的TIME_WAIT 。 我用ss -svalidation了这一点。 为了解决这个问题,我记得在sysctl下设置了三个值。 而这个已经足够解决这个问题,但由于某种原因设置如下: net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_fin_timeout = 1 不工作了。 这只会使每秒的连接数从20k +下降到大约每分钟4个 。 我可能记得上面的sysctlnetworkingconfiguration中的错误设置,但是我以前每秒钟都会从这台机器中获得大约20k +的连接数。 那么为什么这一下子把我锁到4 /秒呢? 同一台机器,与Arch Linux最小安装对127.0.0.1运行的i7。 我尝试设置的主要信息来源是: 如何减lessTIME_WAIT中的套接字数量? 编辑: 看起来tcp_fin_timeout对系统没有影响。 根据这张图片判断,即使服务器(左上angular)和客户端(右上angular)不再进行任何连接,仍然有数千个连接仍在timewait 。 在10秒的运行结束时,我设法通过了18805个连接,这个连接对于这台机器来说不是一个漏洞(因为服务器和客户端驻留在同一台机器上,所以~36k个TIME_WAITsockets)。 为什么tcp_fin_timeout在一秒之后不会丢弃连接? 这绝对是不尊重我的自定义tcp_fin_timeout操作系统。
我试图部署我的瓶apirestnginx(在子域上)没有成功。 我已经按照这个例子从数字海洋和一切工作正常,但后来我改变了教程示例代码我的我的和POST请求根本不工作。 我正在使用Postman Chrome应用程序,每次我做一个POST请求到“api.domain.com/CreateUser”我得到一个404错误: “在服务器上找不到请求的URL,如果你手动input了URL,请检查你的拼写,然后重试。 这是我的VHconfiguration: server { listen 80; server_name api.domain.com; location / { include proxy_params; proxy_pass http://unix:/home/ubuntu/apirest/apirest.sock; } } 这是python文件(flask api示例): from flask import Flask, jsonify, url_for, redirect, request from flask_restful import Resource, Api, reqparse from flask_cors import CORS, cross_origin app = Flask(__name__) CORS(app) api = Api(app) class CreateUser(Resource): def post(self): return jsonify({ […]
我不能绑定(使用C或python套接字)范围内的任何端口:59969-60000 使用lsof,netstat和fuser我没有看到使用这些端口的任何进程。 其他端口,如59900-59968和60001-60009我可以绑定到他们。 我的操作系统是CentOS 5.5(Final)2.6.18-194.3.1.el5 一定有什么遗漏? 任何人有任何想法如何debugging为什么这个端口范围不可用? 干杯,伊万
使用主机提供商的SMTP服务器成功发送邮件的Web服务器似乎突然失去了与SMTP服务器的连接。 [Wed Nov 28 09:51:27 2012] [error] [client 10.250.11.81] PHP Warning: fsockopen(): unable to connect to smtp.ourprovider.net:25 (Connection timed out) in /var/www/(….)/phpmailer/class.smtp.php on line 105, referer: http://oursite.net/sendmessage.php# 如果我通过Web服务器手动远程login到SMTP服务器的端口25,我可以毫无问题地连接和发送邮件。 Web服务器运行RHEL 6.3和Apache 2.2.15。 SE布尔值httpd_can_network_connect on 。 我们的PHP版本是5.3.3。 我应该从哪里开始着手解决这个问题?
我们有一个处理SSL的F5 Big-IP负载平衡器,所以它后面的服务器得到HTTPS而不是HTTP( SSL卸载 )。 我没有版本方便,但在login页面,我可以看到“版权1996-2010”,所以我想这不是最新版本:) 这个模式如何与WS和WSS一起工作? WSS握手会冲击负载均衡器,然后作为WS握手转发到Web服务器吗? 谢谢。
我们正在开发一个JavaEE 7应用程序来部署在JBoss / Wildfly上,它将广泛使用Web Sockets。 我们使用mod_proxy_wstunnel来支持web套接字,并且我们设法通过在Apache 2.4上使用mod_cluster来启动并运行代理configuration: Internet – > Apache HTTPD – > Wildfly 我们现在正面临着这个应用程序集群化的问题。 我们将至less有4个节点启动并运行,以实现性能可扩展性和高可用性。 我试图用2个成员服务器创build一个<Proxy />元素来完成这个任务。 它看起来像这样: <VirtualHost *:80> … <Proxy balancer://myBalancer> BalancerMember ws://localhost:9080 BalancerMember ws://localhost:19080 </Proxy> <Location /ws> … ProxyPass balancer://myBalancer/MyContextPath/myWebSocketEndpoint ProxyPassReverse balancer://myBalancer/MyContextPath/myWebSocketEndpoint </Location> </VirtualHost> 但是,这是行不通的。 尝试打开path为http://localhost/ws的Web套接字时,我总是收到JavaScript中的连接错误。 我快速浏览了mod_proxy_balancer的文档,注意到它声明了对HTTP,FTP和AJP13协议的支持。 有没有办法负载平衡Web套接字和WS协议? 或者这是完全不受支持的configuration? 我可以利用其他什么方法来实现这个目标? 显然,将单个networking套接字服务器作为我们的生产端点是不可接受的,因为它代表了单点故障。 我非常感谢你的build议!
我最近把我的mysql的datadir从/var/lib/mysql移到了一个新的目录/home/mysql上,这个目录挂载在一个新的硬盘上。 为了整洁起见,我认为将tmpdir和socket放在这个新硬盘上会很好。 一切工作按计划,直到我移动套接字文件。 移动套接字文件可以防止phpMyAdminlogin; 我可以很好地从命令行login,并使用我的web框架,而不是使用phpMyAdmin。 工作configuration和不是的唯一区别是在my.cnf文件中。 加工: [mysqld] socket = /var/lib/mysql/mysql.sock … [client] socket = /var/lib/mysql/mysql.sock 不: [mysqld] socket = /home/mysql/mysql.sock … [client] socket = /home/mysql/mysql.sock 假设这是一个权限错误,我检查了每个位置的path: drwxr-xr-x. root root var drwxr-xr-x. root root lib drwxr-xr-x mysql mysql mysql srwxrwxrwx mysql mysql mysql.sock drwxr-xr-x. root root home drwxr-xr-x mysql mysql mysql srwxrwxrwx mysql mysql mysql.sock […]