【GitLab】记GitLab Puma 8080 端口冲突解决

GitLab 13.0 开始,Puma 是默认的应用程序服务器. 计划在 GitLab 14.0 中删除对 Unicorn 的支持.

Puma 具有多线程体系结构,与像 Unicorn 这样的多进程应用程序服务器相比,它使用的内存更少. 在 GitLab.com 上,我们发现内存消耗减少了 40%.

大多数 Rails 应用程序请求通常都包含一定比例的 I / O 等待时间. 在 I / O 等待时间内,MRI Ruby 将释放 GVL(全局 VM 锁定)到其他线程. 因此,多线程 Puma 仍然可以处理比单个进程更多的请求.


环境:

CentOS 7.9
GitLab 13.10.3
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION # 查看版本

解决:

1.修改 puma.rb 配置

vim /var/opt/gitlab/gitlab-rails/etc/puma.rb

# Bind the server to "url". "tcp://", "unix://" and "ssl://" are the only
# accepted protocols.
bind 'unix:///var/opt/gitlab/gitlab-rails/sockets/gitlab.socket'

bind 'tcp://127.0.0.1:8092' ## 默认8080,修改为自己服务不冲突的端口,这里我改为8092

directory '/var/opt/gitlab/gitlab-rails/working'

workers 6

require_relative "/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/cluster/lifecycl
<think>好的,用户的问题是解决Puma 5.6.2占用8080端口的问题,想要释放端口或者找到替代配置方法。首先,我需要确定用户的操作系统,因为不同的系统命令可能不同。不过用户没有说明,可能需要给出通用方法或者分别说明。 第一步,应该检查8080端口是否确实被Puma占用。常用的命令有lsof和netstat。在Linux/macOS下,可以用`lsof -i :8080`,Windows下可以用`netstat -ano | findstr :8080`。找到进程ID后,结束进程。这里可能需要管理员权限,所以需要提醒用户使用sudo或管理员模式。 然后,如果用户希望停止Puma服务,可能需要通过应用本身来停止,比如在Rails项目中用Ctrl+C,或者使用系统的服务管理命令,比如systemctl。不过如果是开发环境,通常直接Ctrl+C就可以了。 接下来,如何更改Puma端口配置。用户可能是在开发环境中使用,比如Rails,这时候需要修改config/puma.rb文件,添加`port ENV.fetch('PORT', 3000)`,这样可以通过环境变量设置端口,或者默认3000。或者启动时指定端口,如`bundle exec puma -p 3000`。需要确保用户知道如何找到配置文件或者使用命令行参数。 另外,可能存在的其他情况,比如有其他进程占用了端口,这时候需要用户确认是否是Puma的问题,还是其他应用。如果用户已经停止了Puma端口仍被占用,可能需要进一步排查。 最后,生成相关问题,比如如何检查端口占用、如何配置不同环境的端口、如何防止端口冲突等。确保用户有其他可能需要的信息。 需要确保步骤清晰,命令正确,并且考虑到不同操作系统的差异。同时,引用相关的参考资料,比如Puma的官方文档,或者常见的开发者资源。</think>### 如何释放被 Puma 5.6.2 占用的 8080 端口? #### 方法一:终止占用端口的进程 1. **查找进程 ID** - **Linux/macOS** 使用命令: ```bash lsof -i :8080 ``` 找到包含 `LISTEN` 状态的进程 ID(例如 `12345`)。 - **Windows** 使用命令: ```powershell netstat -ano | findstr :8080 ``` 录对应的 `PID`(例如 `6789`)。 2. **终止进程** - **Linux/macOS**: ```bash sudo kill -9 12345 ``` - **Windows**: ```powershell taskkill /PID 6789 /F ``` #### 方法二:通过 Puma 配置修改端口 1. **修改 Puma 配置文件** 在 Rails 项目的 `config/puma.rb` 中添加或修改以下行: ```ruby port ENV.fetch('PORT', 3000) # 将默认端口改为 3000 或其他可用端口 ``` 重启 Puma 服务: ```bash bundle exec puma ``` 2. **临时指定端口启动** 直接通过命令行参数启动: ```bash bundle exec puma -p 3000 # 使用 3000 端口 ``` #### 方法三:检查替代端口占用 使用 `lsof -i :新端口号` 或 `netstat -ano | findstr :新端口号` 确认新端口未被占用。 #### 验证端口释放 重新运行 `lsof`/`netstat` 命令,确认 8080 端口无 `LISTEN` 状态进程。 ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值