Debugging in Heroku


Powered through the lessons and was finally finished- but alas…

Launching the site I got an Application error screen :(

I’m at the point where I don’t mind a deep web search to figure out the issue but Heroku isn’t giving me much to work with. Is there I way to get more details on the errors?

From Heroku logs:

heroku[router]: at=error code=H10 desc=“App crashed” method=GET path="/" request_id=34b6e615-46c4-44c9-9679-8108a2920ed4 fwd=“” dyno= connect= service= status=503 bytes=

heroku[router]: at=error code=H10 desc=“App crashed” method=GET path="/favicon.ico" request_id=7e722efc-da3b-4cdf-b833-d70c1d00f56c fwd=“” dyno= connect= service= status=503 bytes=


I need to bump this. I’m having the same issue. This is an image of my application from heroku:

I’m not sure what’s going on. when running logs on my terminal, this is what comes up:

2016-06-08T04:24:27.032296+00:00 app[web.1]:     --help
2016-06-08T04:24:27.032296+00:00 app[web.1]:         Show this information.
2016-06-08T04:24:27.032297+00:00 app[web.1]: 
2016-06-08T04:24:27.032297+00:00 app[web.1]:     --call
2016-06-08T04:24:27.032297+00:00 app[web.1]:         Call the given object to get the WSGI application.
2016-06-08T04:24:27.032298+00:00 app[web.1]: 
2016-06-08T04:24:27.032298+00:00 app[web.1]:     --host=ADDR
2016-06-08T04:24:27.032299+00:00 app[web.1]:         Hostname or IP address on which to listen, default is '',
2016-06-08T04:24:27.032299+00:00 app[web.1]:         which means "all IP addresses on this host".
2016-06-08T04:24:27.032299+00:00 app[web.1]: 
2016-06-08T04:24:27.032300+00:00 app[web.1]:     --port=PORT
2016-06-08T04:24:27.032300+00:00 app[web.1]:         TCP port on which to listen, default is '8080'
2016-06-08T04:24:27.032300+00:00 app[web.1]: 
2016-06-08T04:24:27.032301+00:00 app[web.1]:     --unix-socket=PATH
2016-06-08T04:24:27.032301+00:00 app[web.1]:         Path of Unix socket. If a socket path is specified, a Unix domain
2016-06-08T04:24:27.032301+00:00 app[web.1]:         socket is made instead of the usual inet domain socket.
2016-06-08T04:24:27.032302+00:00 app[web.1]: 
2016-06-08T04:24:27.032303+00:00 app[web.1]: 
2016-06-08T04:24:27.032303+00:00 app[web.1]:     --unix-socket-perms=PERMS
2016-06-08T04:24:27.032302+00:00 app[web.1]:         Not available on Windows.
2016-06-08T04:24:27.032303+00:00 app[web.1]:         Octal permissions to use for the Unix domain socket, default is
2016-06-08T04:24:27.032304+00:00 app[web.1]:         '600'.
2016-06-08T04:24:27.032304+00:00 app[web.1]: 
2016-06-08T04:24:27.032304+00:00 app[web.1]:     --url-scheme=STR
2016-06-08T04:24:27.032305+00:00 app[web.1]:         Default wsgi.url_scheme value, default is 'http'.
2016-06-08T04:24:27.032305+00:00 app[web.1]: 
2016-06-08T04:24:27.032305+00:00 app[web.1]:    --url-prefix=STR
2016-06-08T04:24:27.032306+00:00 app[web.1]:         The ``SCRIPT_NAME`` WSGI environment value.  Setting this to anything
2016-06-08T04:24:27.032306+00:00 app[web.1]:         except the empty string will cause the WSGI ``SCRIPT_NAME`` value to be
2016-06-08T04:24:27.032306+00:00 app[web.1]:         the value passed minus any trailing slashes you add, and it will cause
2016-06-08T04:24:27.032307+00:00 app[web.1]:         the ``PATH_INFO`` of any request which is prefixed with this value to
2016-06-08T04:24:27.032307+00:00 app[web.1]:         be stripped of the prefix.  Default is the empty string.
2016-06-08T04:24:27.032307+00:00 app[web.1]: 
2016-06-08T04:24:27.032308+00:00 app[web.1]:     --ident=STR
2016-06-08T04:24:27.032308+00:00 app[web.1]:         Server identity used in the 'Server' header in responses. Default
2016-06-08T04:24:27.032309+00:00 app[web.1]:         is 'waitress'.
2016-06-08T04:24:27.032309+00:00 app[web.1]: 
2016-06-08T04:24:27.032309+00:00 app[web.1]: Tuning options:
2016-06-08T04:24:27.032310+00:00 app[web.1]: 
2016-06-08T04:24:27.032310+00:00 app[web.1]:     --threads=INT
2016-06-08T04:24:27.032310+00:00 app[web.1]:         Number of threads used to process application logic, default is 4.
2016-06-08T04:24:27.032311+00:00 app[web.1]: 
2016-06-08T04:24:27.032311+00:00 app[web.1]:     --backlog=INT
2016-06-08T04:24:27.032312+00:00 app[web.1]:         Number of bytes to request when calling socket.recv(). Default is
2016-06-08T04:24:27.032311+00:00 app[web.1]:         Connection backlog for the server. Default is 1024.
2016-06-08T04:24:27.032312+00:00 app[web.1]: 
2016-06-08T04:24:27.032312+00:00 app[web.1]:     --recv-bytes=INT
2016-06-08T04:24:27.032313+00:00 app[web.1]:         8192.
2016-06-08T04:24:27.032313+00:00 app[web.1]: 
2016-06-08T04:24:27.032313+00:00 app[web.1]:     --send-bytes=INT
2016-06-08T04:24:27.032314+00:00 app[web.1]:         Number of bytes to send to socket.send(). Default is 18000.
2016-06-08T04:24:27.032314+00:00 app[web.1]:         Multiples of 9000 should avoid partly-filled TCP packets.
2016-06-08T04:24:27.032314+00:00 app[web.1]: 
2016-06-08T04:24:27.032315+00:00 app[web.1]:     --outbuf-overflow=INT
2016-06-08T04:24:27.032315+00:00 app[web.1]:         A temporary file should be created if the pending output is larger
2016-06-08T04:24:27.032315+00:00 app[web.1]:         than this. Default is 1048576 (1MB).
2016-06-08T04:24:27.032316+00:00 app[web.1]: 
2016-06-08T04:24:27.032316+00:00 app[web.1]:     --inbuf-overflow=INT
2016-06-08T04:24:27.032316+00:00 app[web.1]:         A temporary file should be created if the pending input is larger
2016-06-08T04:24:27.032317+00:00 app[web.1]:         than this. Default is 524288 (512KB).
2016-06-08T04:24:27.032317+00:00 app[web.1]: 
2016-06-08T04:24:27.032317+00:00 app[web.1]:     --connection-limit=INT
2016-06-08T04:24:27.032318+00:00 app[web.1]:         Stop creating new channelse if too many are already active.
2016-06-08T04:24:27.032318+00:00 app[web.1]:         Default is 100.
2016-06-08T04:24:27.032318+00:00 app[web.1]: 
2016-06-08T04:24:27.032319+00:00 app[web.1]:     --cleanup-interval=INT
2016-06-08T04:24:27.032319+00:00 app[web.1]:         Minimum seconds between cleaning up inactive channels. Default
2016-06-08T04:24:27.032320+00:00 app[web.1]:     --channel-timeout=INT
2016-06-08T04:24:27.032321+00:00 app[web.1]:         Maximum number of seconds to leave inactive connections open.
2016-06-08T04:24:27.032321+00:00 app[web.1]:         Default is 120. 'Inactive' is defined as 'has recieved no data
2016-06-08T04:24:27.032320+00:00 app[web.1]:         is 30. See '--channel-timeout'.
2016-06-08T04:24:27.032320+00:00 app[web.1]: 
2016-06-08T04:24:27.032321+00:00 app[web.1]:         from the client and has sent no data to the client'.
2016-06-08T04:24:27.032322+00:00 app[web.1]: 
2016-06-08T04:24:27.032322+00:00 app[web.1]:     --[no-]log-socket-errors
2016-06-08T04:24:27.032322+00:00 app[web.1]:         Toggle whether premature client disconnect tracepacks ought to be
2016-06-08T04:24:27.032323+00:00 app[web.1]:         logged. On by default.
2016-06-08T04:24:27.032323+00:00 app[web.1]: 
2016-06-08T04:24:27.032323+00:00 app[web.1]:     --max-request-header-size=INT
2016-06-08T04:24:27.032326+00:00 app[web.1]:         Maximum size of all request headers combined. Default is 262144
2016-06-08T04:24:27.032326+00:00 app[web.1]:         (256KB).
2016-06-08T04:24:27.032327+00:00 app[web.1]: 
2016-06-08T04:24:27.032327+00:00 app[web.1]:         Maximum size of request body. Default is 1073741824 (1GB).
2016-06-08T04:24:27.032327+00:00 app[web.1]:     --max-request-body-size=INT
2016-06-08T04:24:27.032327+00:00 app[web.1]: 
2016-06-08T04:24:27.032328+00:00 app[web.1]:     --[no-]expose-tracebacks
2016-06-08T04:24:27.032328+00:00 app[web.1]:         Toggle whether to expose tracebacks of unhandled exceptions to the
2016-06-08T04:24:27.032328+00:00 app[web.1]:         client. Off by default.
2016-06-08T04:24:27.032329+00:00 app[web.1]: 
2016-06-08T04:24:27.032329+00:00 app[web.1]:     --asyncore-loop-timeout=INT
2016-06-08T04:24:27.032329+00:00 app[web.1]:         The timeout value in seconds passed to asyncore.loop(). Default is 1.
2016-06-08T04:24:27.032330+00:00 app[web.1]:         The use_poll argument passed to ``asyncore.loop()``. Helps overcome
2016-06-08T04:24:27.032330+00:00 app[web.1]:     --asyncore-use-poll
2016-06-08T04:24:27.032331+00:00 app[web.1]:         open file descriptors limit. Default is False.
2016-06-08T04:24:27.032331+00:00 app[web.1]: 
2016-06-08T04:24:27.032331+00:00 app[web.1]: 
2016-06-08T04:24:27.032330+00:00 app[web.1]: 
2016-06-08T04:24:27.806147+00:00 heroku[web.1]: Process exited with status 1
2016-06-08T04:24:27.815744+00:00 heroku[web.1]: State changed from starting to crashed
2016-06-08T04:28:19.560935+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" request_id=4b339139-3688-40d6-8ad9-8e0730d0ded4 fwd="" dyno= connect= service= status=503 bytes=
2016-06-08T04:28:20.489580+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" request_id=2e031ace-95a8-4094-bd4a-ae45fb5e63d8 fwd="" dyno= connect= service= status=503 bytes=

Searching on stackoverflow, the only thing I can find is maybe something about naming conventions in the procfile (or file)? But I’m really unsure about all of this as it’s my first time even making a web application.

Any thoughts?


Blergh, I hate it when I find out I missed a message here. :(

Is that the Heroku error logs?


Yes. That is the heroku error logs I got from terminal when I ran

$ heruku logs


Have you tried changing syntax in Procfile?
web: waitress-serve --port=$PORT hellowebapp.wsgi:application

Change the name hellowebapp