coltonOP
@coltonOP (こるとんくん)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

AWS EC2でMySqlがToo Many Connectionsになってしまう

解決したいこと

AWS EC2にApacheでDjangoアプリを動かしているのですが、
そのままにしておくと どんどんMySqlのプロセス数が増えていき、最終的にToo many Connectionsになってしまいます。

原因(予測)

実はDjangoアプリの方で、定期的に(1分に1回)データベースの状態を見に行くコードを書いています。
それが原因だと思うのですが対処法がわかりません。

どういう風にアプリorMysqlの設定を変えればようのでしょうか?

こんな感じで増えていってます....

| Id    | User            | Host                | db          | Command | Time    | State                  | Info             |
+-------+-----------------+---------------------+-------------+---------+---------+------------------------+------------------+
|     5 | event_scheduler | localhost           | NULL        | Daemon  | 8652637 | Waiting on empty queue | NULL             |
| 24725 | rdsadmin        | localhost           | NULL        | Sleep   |       9 |                        | NULL             |
| 27863 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | NULL        | Query   |       0 | init                   | show processlist |
| 27867 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     637 |                        | NULL             |
| 27870 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     524 |                        | NULL             |
| 27871 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     517 |                        | NULL             |
| 27872 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     397 |                        | NULL             |
| 27873 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     472 |                        | NULL             |
| 27874 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     284 |                        | NULL             |
| 27875 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     277 |                        | NULL             |
| 27876 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     232 |                        | NULL             |
| 27878 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |      97 |                        | NULL             |
| 27879 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     217 |                        | NULL             |
| 27880 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     404 |                        | NULL             |
| 27881 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     397 |                        | NULL             |
| 27882 | SCH_web_admin   | xxxxxxxxxxxxxxxxxxx | scheduleweb | Sleep   |     352 |                        | NULL             |                        
+-------+-----------------+---------------------+-------------+---------+---------+------------------------+------------------+

#apps.py
class AccountConfig(AppConfig):
    default_auto_field = "django.db.models.BigAutoField"
    name = "account"
    
    def ready(self):
        from .regularclass import start
        start()


#regularclass.py
def start():
    
    scheduler = BackgroundScheduler()
    scheduler.add_job(fordo, 'interval', minutes=1)
    scheduler.start()

def fordo():
    
    MendanHensinConfirm()
    
def MendanHensinConfirm():
    
    MendanAll = MendanMaster.objects.all()
    
    for mendandata in MendanAll:
        
        if(mendandata.state_m == 0):
            mendanstate = 1
            mendantaisyo = TaisyosyaMaster.objects.filter(code_t=mendandata.code_m)
            
            for taisyosya in mendantaisyo:
                
                if(taisyosya.state_t == 0):
                    mendanstate = 0
                    print( str(mendandata.code_m) + "返信していない人あり")
            
            if(mendanstate == 1):
                
                
                ketteihyou = ScheduleAdjust2.main_function(mendandata.code_m)
                
                #決定表に対象者のもれがないか確認する関数
                
                ScheduleAdjust2.NittteiDataRegister(ketteihyou, mendandata.code_m)
                
                
                result = MendanMaster.objects.get(code_m=mendandata.code_m)
                result.state_m = 1
                result.save()
                
        else:
            print( str(mendandata.code_m) + "面談日程が決定しています")


ちなみに現状MendanMasterにはなんのレコードも入れていないので

MendanAll = MendanMaster.objects.all()

の時点で処理は終わるはずなんですが。。。。

0

1Answer

def MendanHensinConfirm():
    MendanAll = MendanMaster.objects.all()

    print(MendanAll)
    return HttpResponse('ok')

returnが必要なのでは?

0Like

Your answer might help someone💌