Most problems reported via GitHub or Slack stem from a configuration problem or issue with a function. Here is a checklist of things you can try before digging deeper:
Here's an example of how you can deploy a function without using an orchestrator - it's useful for testing:
Checklist:
* [ ] All core services are deployed: i.e. gateway
* [ ] Check functions are deployed and started
* [ ] Check request isn't timing out at the gateway or the function level
```
$ docker run --name debug-alpine \
-p 8081:8080 -ti functions/alpine:latest sh
# fprocess=date fwatchdog &
```
## Docker Swarm
Now you can access the function with one of the supported HTTP methods such as GET/POST etc:
### List all functions
```
$ curl -4 localhost:8081
$ docker service ls
```
### Edit your function without rebuilding it
You can bind-mount code straight into your function and work with it locally, until you are ready to re-build. This is a common flow with containers, but should be used sparingly.
If you have additional services / functions remove the remaining ones like this:
## Timeouts
Default timeouts are configured at the HTTP level for the gateway and watchdog. You can also enforce a hard-timeout for your function.
For watchdog configuration see the [README](https://github.com/openfaas/faas/tree/master/watchdog).
For the gateway set the following environmental variables:
* read_timeout, write_timeout - the default for both is "8" - seconds.
## Watchdog
### Debug your function without deploying it
Here's an example of how you can deploy a function without using an orchestrator - it's useful for testing:
```
$ docker service ls -q|xargs docker service rm
$ docker run --name debug-alpine \
-p 8081:8080 -ti functions/alpine:latest sh
# fprocess=date fwatchdog &
```
*Use with caution*
Now you can access the function with one of the supported HTTP methods such as GET/POST etc:
## Kubernetes
```
$ curl -4 localhost:8081
```
### List all functions
### Edit your function without rebuilding it
You can bind-mount code straight into your function and work with it locally, until you are ready to re-build. This is a common flow with containers, but should be used sparingly.