接⼝报错500是什么意思_⼀次排查服务器端接⼝报500错误的
经历
1 出现问题情景
该问题来⾃我实习期间完成的⼀个博客后端系统,具体如下:当我⾟⾟苦苦在编辑器⾥完成⽂章格式修改(字数较多,⼀般⼤于3000字;字数较少时不会出现问题),以及相关⽬录和标签的选定,点击提交按钮打算提交到博客系统时发现:⽂章⽆法提交成功。或者修改⽂章,重新编辑⽂章时(PS:编辑后,字数较多,⼀般⼤于3000字),提交⽂章也出现类似问题。怎么搭配
然后,查看接⼝调⽤返回值发现:
发布⽂章接⼝和修改⽂章接⼝报服务器500错误。
2 排查问题空调扇价格
(1)⾸先,去服务器端查看uwsgi配置的报错信息:⾥⾯只给出了具体接⼝报500错误信息,没有具体错误原因显⽰;
(2)然后,去服务器端查看nginx的报错信息:⾥⾯也只给出了具体接⼝报500错误信息,没有具体错误原因显⽰;
(3)到了现在,就感觉很纳闷了。于是,我跑到本地测试相关接⼝,发现所有接⼝功能正常使⽤,没有什么报错信息提⽰。到了这⼀步,可以排除代码实现逻辑是没有问题,那么问题就应该出现在测试服务器环境的服务器部署问题,⽽且问题可能就出现在数据库配置部署。
(4)最后,按照(3)的想法,到测试环境开启博客系统后端服务的shell环境,执⾏具体发布和更新⽂章的接⼝⽅法,直接对后端数据进⾏添加和更新操作,于是发现以下报错:
django.db.utils.OperationalError: (1153, "Got a packet bigger than 'max_allowed_packet' bytes")
问题果然是出现在数据库层调⽤出现的问题。依据问题可知:由于数据写⼊量太⼤,超出mysql数据库最⼤单个数据存储字节⼤⼩,从⽽导致数据⽆法写⼊或者更新。
3 解决办法
想做网络推广在测试服务器,使⽤root账号权限,修改最⼤字节数,步骤代码如下:
─[liuzhen@liuzhen] - [/etc/mysql] - [Fri Jul 27, 10:30]└─[$]> mysql -u root -proot
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 128557Server version: 5.7.20-0ubuntu0.16.04.1-log (Ubuntu)
Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective优酷视频制作软件
大唐双龙传宋玉致owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> set global net_buffer_length=1000000;
Query OK, 0 rows affected, 2 warnings (0.01 sec)
mysql> set global max_allowed_packet=1000000000;
神雕之帝王再生
Query OK, 0 rows affected, 1 warning (0.00 sec)
修改成功后,重新调⽤博客系统发布⽂章和修改⽂章接⼝,发现问题得到解决。
4 写在最后
刚开始遇到这个问题时,发现服务器500错误,排查了好久⼀直不到具体报错原因,也⽆法作出具体解决⽅案。于是,到⽹上查看了⼀下接⼝报500服务器内部错误出现的⼀般原因,发现:
⼀般出现500服务器内部错误,极可能是调⽤数据库进⾏数据查询、更新、修改或者删除时出现了逻辑错误或者相关错误,也就是数据库层调⽤出现了错误。
出现后,排查⽇志和接⼝返回错误提⽰,可能是不到报错信息,所以最好的⽅法就是去⼿动在相应环境下执⾏⼀下数据库层调⽤⽅法,排查⼀下具体问题。
参考资料:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论