首页 > 其他分享 >首页高并发案例遇到的问题以及解决办法

首页高并发案例遇到的问题以及解决办法

时间:2024-07-25 20:55:19浏览次数:10  
标签:解决办法 temp 并发 -- ip redis nginx 首页 安装

要通过openresty,ngin,MySQL和redis来部署一个项目

首先需要安装以上工具

安装openresty

yum intsall yum-utils

yum-config-manager --add-repo https://openresty.org/package/centos/openresty.repo

首先执行这两行代码

然后就可以执行安装命令

yum install openresty -y

在安装完成后会默认存储在/usr/local/oprenresty目录中

安装nginx

下载nginx可以通过nginx的官网进行下载

官网地址:http://nginx.org/en/download.html

通过xftp等软件将nginx上传到linux操作系统中

对nginx进行解压缩

tar zxf nginx-1.8.0.tar.gz

安装nginx需要先将官网下载的源码进行编译,需要安装gcc

yum install gcc-c++

在linux上安装zlib库

yum install -y zlib zlib-devel

在linux上安装openssl库

yum install -y openssl openssl-devel

进入nginx目录,使用configure命令进行安装

./configure \
--prefix=/usr/local/nginx \
--pid-path=/var/run/nginx/nginx.pid \
--lock-path=/var/lock/nginx.lock \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi

编译安装

先使用make命令进行编译

make

再使用make install命令进行安装

make install

做一个访问测试

在浏览器输入ip

如果不能访问就需要配关闭防火墙

安装mysql

从docker中拉取mysql的镜像,然后创建一个容器即可,端口号要一致,默认为3306

安装redis

先要确认redis的编译环境的命令

yum install gcc-c++

安装时有输入提示,按y即可

安装redis

先将redis存储到/usr/local目录下

解压redis包

tar -zxvf redis-5.0.5.tar.gz

编译redis

进入解压包执行make命令

cd redis-5.0.5

make

安装

make PREFIX=/usr/local/redis install

copy文件,可以通过redis.conf文件修改端口号

cp redis.conf /usr/local/redis

后端启动

设置daemonize yes,然后可以用后端模式启动

vim redis.conf

daemonize yes

启动时,指定配置文件(这里所在的文件夹时redis)

./bin/redis-server ./redis.conf

redis默认的端口号时6379,可以通过当前服务进行查看

高并发案例准备工作

先启动openresty,测试访问,输入ip/,如果显示一下如下界面则表示成功

需求分析

需要在页面上能够显示广告的信息

用lua+nginx配置

数据时事先准备在mysql数据库中的,数据中的ip一定不能出错

思路:

定义请求:用查询数据库中的数据更新到redis中

a.连接mysql,按照广告分类id读取广告,转换为json字符串

b.连接redis,将广告表json存入redis

定义请求:

请求地址是id/update_content?id=1

创建/root/lua目录,在该目录下创建update_content.lua,目的就是连接mysql中的数据并存储到redis中,如下:ip一定要是自己的ip,以及数据库的库名,账户和密码一定要是自己的

并在/usr/local/openresty/nginx/conf/nginx.conf中存入以下代码:

重启nginx,进行测试是否成功

测试地址:ip/update_content?id=1

在这个时候分类id=1的广告就会被查询出来存到redis中

出现如图页面就表示测试成功

从redis中获取数据

请求如下

在/root/local目录下创建一个read_content.lua文件

在文件中写入一下代码:

ip一定要是自己的ip

在/usr/local/openresty/nginx/conf/nginx.conf文件中存入以下代码:

重启nginx,进行测试

输入ip/read_content?id=1

此时会将分类id=1的所有广告查询出来,如图:

此图中就是我在mysql中事先存入的数据

由此可见mysql中的数据已经存进了redis中

将事先准备好的html文件上窜到nginx中,地址是/usr/local/openresty/nginx/html

测试一下是否可以接通,可以通过ip直接访问

因为每个项目都是不一样的,所以只要见到的项目没有问题就表示已经部署成功了

遇到的一些问题

在update_content.lua和read_content.lua中一定要将自己的ip改为自己的ip,同时也要将相关部分修改成自己的,比如端口号,数据库的账号密码以及库名

如果无法访问update的测试页面

可能是因为自己的ip或者数据库的相关部分和自己虚拟机上的部分不一致,或者和主机上的数据库不一致,又或者没有镜像,没有连接数据库等都可能造成无法访问update页面的问题

如果无法访问read的测试页面

如果能够访问update却无法访问read,则很有可能是因为read中的ip部署有误,又或者是nginx.conf中输入的内容有误,如图:

location是和location在一起的,不能分开,路径也不能有误,如果有一个出现错误read都无法运行

还有就是可能在update_content和read_content这两行location中有可能会有一些特殊符号,在部署项目的时候一定要注意

如果两个文件都没有问题但是最终的项目部署发现有问题,那应该就是html文件的问题了,可以先检查HTML中是否存在错误

标签:解决办法,temp,并发,--,ip,redis,nginx,首页,安装
From: https://blog.csdn.net/m0_70862775/article/details/140698920

相关文章

  • Kotlin协程:现代并发编程的艺术
    引言随着软件系统变得越来越复杂,处理异步操作的需求也随之增加。传统的多线程模型虽然有效,但在某些情况下会导致过多的资源消耗和复杂的控制流。Kotlin协程提供了一种优雅的方式来管理这些异步任务,并且极大地简化了代码结构。协程简介协程是一种轻量级的线程,允许程序在执行过......
  • Easyconnect登录提示:拉起虚拟网卡失败 解决办法
    原文链接:https://www.cnblogs.com/runningwind/p/17532438.html用户使用easyconnect登录SSLVPN后提示:拉起虚拟网卡失败,请确保虚拟网卡已经安装在系统上并处于启用状态 设备管理器查看虚拟网卡一直有感叹号 尝试更新网卡驱动及启用禁用虚拟网卡,不行尝试使用SSLVPN诊断修......
  • ubuntu下goland打开新的项目闪退的解决办法
    安装最新的ubuntu2024.04版本的desktop,安装了goland作go的开发遇到问题,刚从服务器clone的项目,使用goland打开,会闪退,再打开goland,会回到上一次正常打开的项目经过多次测试,发现是无法自动创建.idea目录导致,我复制一个其他项目的.idea的目录进取后,可以正常打开,但相关项目是信息是错......
  • 高并发场景下,布隆过滤器+缓存基本步骤
    在高并发场景下,布隆过滤器与缓存的结合使用可以显著提升系统的响应速度和降低后端数据库的负载。以下是布隆过滤器与缓存(如Redis)结合使用的一般配置步骤和原理:1.原理布隆过滤器作为预检查:在查询缓存或数据库之前,先使用布隆过滤器检查请求的键是否可能存在于缓存或数据库中......
  • HarmonyOS:组件Navigation使用中List显示不全的问题探究以及解决办法
    1.线性布局中在使用NavPathStack布局中中发现如果使用List组件会发现item显示不全,在使用官方提供的例子中也发现此问题。如图所示:底部被遮挡,官方示例的写法2.如果线性布局中,不显示导航栏,也会出现List被遮挡的问题如图所示:我们的页面布局中的List缺失一部分根据Previ......
  • 达梦数据库系列—32.多版本并发控制MVCC
            在多版本控制以前,数据库仅通过锁机制来实现并发控制。数据库对读操作上共享锁,写操作上排他锁,这种锁机制虽然解决了并发问题,但影响了并发性。        DM数据库基于物理记录和回滚记录实现行级多版本支持,数据页中只保留物理记录的最新版本,通过回滚记录......
  • JVM 内存结构、垃圾回收机制与并发容器
    目录一、JVM内存结构 1.程序计数器(ProgramCounterRegister): 2.Java虚拟机栈(JVMStack): 3.本地方法栈(NativeMethodStack): 4.堆(Heap): 5.方法区(MethodArea):二、垃圾回收机制 1.标记-清除算法: 2.复制算法: 3.标记-整理算法: 4.分代收集:三、并发容器......
  • golang并发编程(新手向)
    golang并发所有工具的简单介绍1goroutine:准确来说这并不是一个和C#Java一样的线程,而是golangruntime管理的一个轻量级线程,但是我们完全可以把他当做是一个线程,使用go关键字来开启2channel:这是一种通信方式,相当于不同线程之间建立了管道通信的机制,管道有很多种,但是只要把......
  • Java并发编程实战读书笔记(四)
    显示锁Lock与ReentrantLockLock接口定义了一组抽象的加锁操作,与内置加锁机制不同,Lock提供了一种无条件的、可轮询的、定时的以及可中断的锁获取操作,所有加锁和解锁的方法都是显式的。在Lock的实现中必须提供与内部锁相同的内存可见性语义,但在加锁语义、调度算法、顺......
  • Java并发编程实战读书笔记(二)
    对象的组合在设计线程安全的类时,确保数据的一致性和防止数据竞争是至关重要的。这通常涉及三个基本要素:确定构成对象状态的所有变量,明确约束这些状态变量的不变性条件,以及建立管理对象状态并发访问的策略。要确定构成对象状态的所有变量相对简单,但需注意状态应封装在对象......